๐น ์์คํ ์ ๋ค์ด๊ฐ๋ ๋ชจ๋ ์ํํธ์จ์ด๋ฅผ ์ง์ ๊ฐ๋ฐํ๋ ๊ฒฝ์ฐ๋ ๋๋ฌผ๋ค.
์คํ์์ค๋ฅผ ์ด์ฉํ๊ฑฐ๋, ์ฌ๋ด ๋ค๋ฅธ ํ์ด ์ ๊ณตํ๋ ์ปดํฌ๋ํธ๋ฅผ ์ด์ฉํ๊ฑฐ๋, ์ด๋ค ์์ผ๋ก๋ ์ด ์ธ๋ถ ์ฝ๋๋ฅผ ์ฐ๋ฆฌ ์ฝ๋์ ๊น๋ํ๊ฒ ํตํฉํด์ผ ํ๋ค. ์ด ์ฅ์์๋ ์ํํธ์จ์ด ๊ฒฝ๊ณ๋ฅผ ๊น๋ํ๊ฒ ์ฒ๋ฆฌํ๋ ๊ธฐ๋ฒ๊ณผ ๊ธฐ๊ต๋ฅผ ์ดํด๋ณธ๋ค.
์ธ๋ถ ์ฝ๋ ์ฌ์ฉํ๊ธฐ
- ํจํค์ง ์ ๊ณต์๋ ํ๋ ์์ํฌ ์ ๊ณต์๋ ์ ์ฉ์ฑ์ ์ต๋ํ ๋ํ๋ ค ์ ์ด๋ค.
- ๋ ๋ง์ ํ๊ฒฝ์์ ๋์๊ฐ์ผ ๋ ๋ง์ ๊ณ ๊ฐ์ด ๊ตฌ๋งคํ๋๊น.
- ๋ฐ๋ฉด ์ฌ์ฉ์๋ ์์ ์ ์๊ตฌ์ ์ง์คํ๋ ์ธํฐํ์ด์ค๋ฅผ ๋ฐ๋๋ค.
- ์ด๋ฐ ์ฐจ์ด๋ก ์์คํ ๊ฒฝ๊ณ์ ๋ฌธ์ ๊ฐ ์๊ธธ ์์ง๊ฐ ๋ง๋ค.
๐ป java.util.Map
- Map์ด ์ ๊ณตํ๋ ๊ธฐ๋ฅ๊ณผ ์ ์ฐ์ฑ์ ํ์คํ ์ ์ฐํ์ง๋ง ๊ทธ๋งํผ ์ํ์ฑ๋ ํฌ๋ค.
- ์ : Map์ clear() ๋ฉ์๋
- Map์ ์ฌ์ฉ์๋ผ๋ฉด ๋๊ตฌ๋ Map ๋ด์ฉ์ ์ง์ธ ๊ถํ์ด ์๋ค.
- ํน์ ์ค๊ณ์ Map์ ํน์ ์ ํ๋ง ์ ์ฅํ๊ธฐ๋ก ๊ฒฐ์ ํ์ง๋ง Map์์ ๊ฐ์ฒด ์ ํ์ ์ ํํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ง์๋ง ๋จน์ผ๋ฉด ์ฌ์ฉ์๋ ์ด๋ค ๊ฐ์ฒด ์ ํ๋ ์ถ๊ฐํ ์ ์๋ค.
Map sensors = new HashMap();
Sensor s = (Sensor)sensors.get(sensorId);
์์ ๊ฐ์ ๊ฒฝ์ฐ Map์ด ๋ฐํํ๋ Object๋ฅผ ์ฌ๋ฐ๋ฅธ ์ ํ์ผ๋ก ๋ณํํ ์ฑ ์์ Map์ ์ฌ์ฉํ๋ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ค. ์ด ๋ฐฉ์ ๋ณด๋ค๋ ์๋์ ๊ฐ์ด ์ ๋ค๋ฆญ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
Map<String, Sensor> sensors = new HashMap<Sensor>();
...
Sensor s = sensors.get(sensorId);
๊ทธ๋ ์ง๋ง ์ด ๋ฐฉ๋ฒ๋ ์ฌ์ฉ์์๊ฒ ํ์ํ์ง ์์ ๊ธฐ๋ฅ๊น์ง ์ ๊ณตํ๋ค๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ง๋ ๋ชปํ๋ค. ์กฐ๊ธ ๋ ๊น๋ํ๊ฒ ์๋์ ๊ฐ์ด ์ ๋ค๋ฆญ์ค์ ์ฌ์ฉ ์ฌ๋ถ๋ฅผ Sensors ์์์ ๊ฒฐ์ ํ๋ฉด ์ด๋จ๊น?
public class Sensors {
private Map sensors = new HashMap();
public Sensor getById(String id) {
return (Sensor) sensors.get(id);
}
// ์ดํ ์๋ต
}
๊ฒฝ๊ณ ์ธํฐํ์ด์ค์ธ Map์ Sensors ํด๋์ค ์์ผ๋ก ์จ๊ธด๋ค. ๋ฐ๋ผ์ Map ์ธํฐํ์ด์ค๊ฐ ๋ณํ๋๋ผ๋ ๋๋จธ์ง ํ๋ก๊ทธ๋จ์๋ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ค. ์ ๋ค๋ฆญ์ค๋ฅผ ์ฌ์ฉํ๋ ํ์ง ์๋ ๋์ด์ ๋ฌธ์ ๊ฐ ์ ๋๋ค. Sensors ํด๋์ค ์์์ ๊ฐ์ฒด ์ ํ์ ๊ด๋ฆฌํ๊ณ ๋ณํํ๊ธฐ ๋๋ฌธ์ด๋ค. Map ํด๋์ค๋ฅผ ์ฌ์ฉํ ๋๋ง๋ค ์์ ๊ฐ์ด ์บก์ํํ๋ผ๋ ์๋ฆฌ๊ฐ ์๋๋ค. Map์ ์ฌ๊ธฐ์ ๊ธฐ ๋๊ธฐ์ง ๋ง๋ ๋ง์ด๋ค. Map๊ณผ ๊ฐ์ ๊ฒฝ๊ณ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ ๋๋ ์ด๋ฅผ ์ด์ฉํ๋ ํด๋์ค๋ ํด๋์ค ๊ณ์ด ๋ฐ์ผ๋ก ๋ ธ์ถ๋์ง ์๋๋ก ์ฃผ์ํ๋ค. Map ์ธ์คํด์ค๋ฅผ ๊ณต๊ฐ API ์ธ์๋ก ๋๊ธฐ๊ฑฐ๋ ๋ฐํ๊ฐ์ผ๋ก ์ฌ์ฉํ์ง ์๋๋ค.
๊ฒฝ๊ณ ์ดํผ๊ณ ์ตํ๊ธฐ
- ์ธ๋ถ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ ์๊ฐ์ ๋ ๋ง์ ๊ธฐ๋ฅ์ ์ถ์ํ๊ธฐ ์ฌ์์ง๋ค.
- ์ธ๋ถ ํจํค์ง ํ ์คํธ๋ ์ฐ๋ฆฌ ์ฑ ์์ด ์๋์ง๋ง
- ์ฐ๋ฆฌ ์์ ์ ์ํด ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ ์ฝ๋๋ ํ ์คํธํ๋ ํธ์ด ๋ฐ๋์งํ๋ค.
- ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ ธ์์ผ๋ ์ฌ์ฉ๋ฒ์ด ๋ถ๋ช
์น ์๋ค๊ณ ๊ฐ์ ํ์.
- ๋๊ฐ๋ ํ๋ฃจ๋ ์ดํ (์๋๋ฉด ๋ ์ค๋ซ๋์) ๋ฌธ์๋ฅผ ์ฝ์ผ๋ฉฐ ์ฌ์ฉ๋ฒ์ ๊ฒฐ์ ํ๋ค.
- ๊ทธ๋ฐ ๋ค์ ์ฐ๋ฆฌ์ชฝ ์ฝ๋๋ฅผ ์์ฑํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์๋๋ก ๋์ํ๋์ง ํ์ธํ๋ค.
- ์ธ๋ถ ์ฝ๋๋ฅผ ์ตํ๊ธฐ๋ ์ด๋ ต๋ค.
- ์ธ๋ถ ์ฝ๋๋ฅผ ํตํฉํ๊ธฐ๋ ์ด๋ ต๋ค.
- ๋ง์ฝ ๊ณง๋ฐ๋ก ์ฐ๋ฆฌ์ชฝ ์ฝ๋๋ฅผ ์์ฑํด ์ธ๋ถ ์ฝ๋๋ฅผ ํธ์ถํ๋ ๋์ ๋จผ์ ๊ฐ๋จํ ํ
์คํธ ์ผ์ด์ค๋ฅผ ์์ฑํด ์ธ๋ถ ์ฝ๋๋ฅผ ์ตํ๋ฉด ์ด๋จ๊น?
- ์ง ๋ด์ปคํฌ๋ ์ด๋ฅผ ํ์ต ํ ์คํธ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
- ํ์ต ํ ์คํธ ๋ ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํ๋ ค๋ ๋ฐฉ์๋๋ก ์ธ๋ถ API๋ฅผ ํธ์ถํ๋ค.
- ํต์ ๋ ํ๊ฒฝ์์ API๋ฅผ ์ ๋๋ก ์ดํดํ๋์ง๋ฅผ ํ์ธํ๋ ์ ์ด๋ค.
- ํ์ต ํ ์คํธ๋ API๋ฅผ ์ฌ์ฉํ๋ ค๋ ๋ชฉ์ ์ ์ด์ ์ ๋ง์ถ๋ค.
log4j ์ตํ๊ธฐ
๋ก๊น ๊ธฐ๋ฅ์ ์ง์ ๊ตฌํํ๋ ๋์ ์ํ์น์ log4j ํจํค์ง๋ฅผ ์ฌ์ฉํ๋ ค ํ๋ค๊ณ ๊ฐ์ ํ๋ค. ๋ฌธ์๋ฅผ ์์ธํ ์ฝ๊ธฐ ์ ์ ๋จผ์ ์ฒซ ๋ฒ์งธ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์์ฑํ๋ค.
@Test
public void testLogCreate() {
Logger logger = Logger.getLogger("MyLogger");
logger.info("hello");
}
ํ ์คํธ๋ฅผ ๋๋ ธ๋๋ Appender๋ผ๋ ๋ญ๊ฐ๊ฐ ํ์ํ๋ค๋ ์ค๋ฅ๊ฐ ๋ฐ์ํด์ ConsoleAppender๋ผ๋ ํด๋์ค๊ฐ ํ์ํ๋ค๋ ๊ฒ์ ์์๋ค.
@Test
public void testLogAddAppender() {
Logger logger = Logger.getLogger("MyLogger");
ConsoleAppender appender = new ConsoleAppender();
logger.addAppender(appender);
logger.info("hello");
}
์ด๋ฒ์๋ Appender์ ์ถ๋ ฅ ์คํธ๋ฆผ์ด ์๋ค๋ ์ฌ์ค์ ๋ฐ๊ฒฌํ๋ค. ๊ตฌ๊ธ์์ ๊ฒ์ํ ํ ๋ค์๊ณผ ๊ฐ์ด ์๋ํ๋ค.
@Test
public void testLogAddAppender() {
Logger logger = Logger.getLogger("MyLogger");
logger.removeAppAppenders();
logger.addAppender(
new ConsoleAppender(
new PatternLayout("%p %t %m%n"), ConsoleAppender.SYSTEM_OUT)
);
logger.info("hello");
}
์ด์ ์ผ ์ ๋๋ก ๋์๊ฐ๋ค. "hello"๊ฐ ๋ค์ด๊ฐ ๋ก๊ทธ ๋ฉ์์ง๊ฐ ์ฝ์์ ์ฐํ๋ค. ConsoleAppender์๊ฒ ์ฝ์์ ์ฐ๋ผ๊ณ ์๋ ค์ผ ํ๋ค๋ ๋ญ๊ฐ ์์ํ๋ค. ํฅ๋ฏธ๋กญ๊ฒ๋ ConsoleAppender.SYSTEM_OUT ์ธ์๋ฅผ ์ ๊ฑฐํ๋๋ ๋ฌธ์ ๊ฐ ์๋ค. PatternLayout์ ์ ๊ฑฐํ๋๋ ์ถ๋ ฅ ์คํธ๋ฆผ์ด ์๋ค๋ ์ค๋ฅ๊ฐ ๋ฌ๋ค. ๋ฌธ์๋ฅผ ์ข ๋ ์์ธํ ์ฝ์ด๋ณด๊ณ ๊ตฌ๊ธ์ ๋ค์ ธ๋ณด๋ฉด์ log4j๊ฐ ๋์๊ฐ๋ ๋ฐฉ์์ ์ดํดํ๊ณ ์ฌ๊ธฐ์ ์ป์ ์ง์์ ๊ฐ๋จํ ๋จ์ ํ ์คํธ ์ผ์ด์ค ๋ช ๊ฐ๋ก ํํํ๋ค.
public class LogTest {
private Logger logger;
@Before
public void initialize() {
logger = Logger.getLogger("logger");
logger.removeAllAppenders();
Logger.getRootLogger().removeAllAppenders();
}
@Test
public void basicLogger() {
BasicConfigurator.configure();
logger.info("basicLogger");
}
@Test
public void addAppenderWithStream() {
logger.addAppender(new ConsoleAppender(new PatternLayout("%p %t %m%n"), ConsoleAppender.SYSTEM_OUT));
logger.info("addAppenderWithStream");
}
@Test
public void addAppenderWithoutStream() {
logger.addAppender(new ConsoleAppender(new PatternLayout("%p %t %m%n")));
logger.info("addAppenderWithoutStream");
}
}
์ง๊ธ๊น์ง ๊ฐ๋จํ ์ฝ์ ๋ก๊ฑฐ๋ฅผ ์ด๊ธฐํํ๋ ๋ฐฉ๋ฒ์ ์ตํ์ผ๋, ์ด์ ๋ชจ๋ ์ง์์ ๋ ์์ ์ธ ๋ก๊ฑฐ ํด๋์ค๋ก ์บก์ํํ๋ค. ๊ทธ๋ฌ๋ฉด ๋๋จธ์ง ํ๋ก๊ทธ๋จ์ log4j ๊ฒฝ๊ณ ์ธํฐํ์ด์ค๋ฅผ ๋ชฐ๋ผ๋ ๋๋ค.
ํ์ต ํ ์คํธ๋ ๊ณต์ง ์ด์์ด๋ค.
- ํ์ต ํ
์คํธ๋ ๊ณต์ง ์ด์์ด๋ค
- ํ์ต ํ
์คํธ์ ๋๋ ๋น์ฉ์ ์๋ค.
- ์ด์จ๋ API๋ฅผ ๋ฐฐ์์ผ ํ๋ฏ๋ก ์คํ๋ ค ํ์ํ ์ง์๋ง ํ๋ณดํ๋ ์์ฌ์ด ๋ฐฉ๋ฒ์ด๋ค.
- ํ์ต ํ ์คํธ๋ ์ดํด๋๋ฅผ ๋์ฌ์ฃผ๋ ์ ํํ ์คํ์ด๋ค.
- ํ์ต ํ
์คํธ๋ ๊ณต์ง ์ด์์ด๋ค.
- ํฌ์ํ๋ ๋ ธ๋ ฅ๋ณด๋ค ์ป๋ ์ฑ๊ณผ๊ฐ ๋ ํฌ๋ค.
- ํจํค์ง ์ ๋ฒ์ ์ด ๋์จ๋ค๋ฉด ํ์ต ํ ์คํธ๋ฅผ ๋๋ ค ์ฐจ์ด๊ฐ ์๋์ง ํ์ธํ๋ค.
- ํ์ต ํ
์คํธ๋ ํจํค์ง๊ฐ ์์๋๋ก ๋๋์ง ๊ฒ์ฆํ๋ค.
- ์ผ๋จ ํตํฉํ ์ดํ๋ผ๊ณ ํ๋๋ผ๋ ํจํค์ง๊ฐ ์ฐ๋ฆฌ ์ฝ๋์ ํธํ๋๋ฆฌ๋ผ๋ ๋ณด์ฅ์ ์๋ค.
- ํจํค์ง ์์ฑ์์๊ฒ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ ํ์๊ฐ ์๊ธธ์ง๋ ๋ชจ๋ฅธ๋ค.
- ํจํค์ง ์์ฑ์๋ ๋ฒ๊ทธ๋ฅผ ์์ ํ๊ณ ๊ธฐ๋ฅ๋ ์ถ๊ฐํ๋ค.
- ํจํค์ง ์ ๋ฒ์ ์ด ๋์ฌ ๋๋ง๋ค ์๋ก์ด ์ํ์ด ์๊ธด๋ค.
- ์ ๋ฒ์ ์ด ์ฐ๋ฆฌ ์ฝ๋์ ํธํ๋์ง ์์ผ๋ฉด ํ์ต ํ ์คํธ๊ฐ ์ด ์ฌ์ค์ ๊ณง๋ฐ๋ก ๋ฐํ๋ธ๋ค.
- ํ์ต ํ
์คํธ๋ฅผ ์ด์ฉํ ํ์ต์ด ํ์ํ๋ ๊ทธ๋ ์ง ์๋ , ์ค์ ์ฝ๋์ ๋์ผํ ๋ฐฉ์์ผ๋ก ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ํ
์คํธ ์ผ์ด์ค๊ฐ ํ์ํ๋ค.
- ์ด๋ฐ ๊ฒฝ๊ณ ํ ์คํธ๊ฐ ์๋ค๋ฉด ํจํค์ง์ ์ ๋ฒ์ ์ผ๋ก ์ด์ ํ๊ธฐ ์ฌ์์ง๋ค.
- ๊ทธ๋ ์ง ์๋ค๋ฉด ๋ก์ ๋ฒ์ ์ ํ์ ์ด์์ผ๋ก ์ค๋ ์ฌ์ฉํ๋ ค๋ ์ ํน์ ๋น ์ง๊ธฐ ์ฝ๋ค.
- ํ์ต ํ
์คํธ์ ๋๋ ๋น์ฉ์ ์๋ค.
์์ง ์กด์ฌํ์ง ์๋ ์ฝ๋๋ฅผ ์ฌ์ฉํ๊ธฐ
- ๊ฒฝ๊ณ์ ๊ด๋ จํด ๋ ๋ค๋ฅธ ์ ํ์ ์๋ ์ฝ๋์ ๋ชจ๋ฅด๋ ์ฝ๋๋ฅผ ๋ถ๋ฆฌํ๋ ๊ฒฝ๊ณ๋ค.
- ๋๋ก๋ ์ฐ๋ฆฌ ์ง์์ด ๊ฒฝ๊ณ๋ฅผ ๋๋จธ ๋ฏธ์น์ง ๋ชปํ๋ ์ฝ๋ ์์ญ๋ ์๋ค.
- ๋๋ก๋ ์๋ ค๊ณ ํด๋ ์ ์๊ฐ ์๋ค.
- ๋๋ก๋ ๋ ์ด์ ๋ด๋ค๋ณด์ง ์๊ธฐ๋ก ๊ฒฐ์ ํ๋ค.
์) ์ก์ ๊ธฐ
์ ์ชฝ ํ์ด ์์ง API๋ฅผ ์ค๊ณํ์ง ์์์ผ๋ฏ๋ก ๊ตฌ์ฒด์ ์ธ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅธ๋ค. ๋ฐ๋ผ์ ๊ตฌํ์ ๋ฏธ๋ฃจ๊ณ ์ด์ชฝ ์ฝ๋๋ฅผ ์งํํ๊ธฐ ์ํด ์์ฒด์ ์ผ๋ก ์ธํฐํ์ด์ค๋ฅผ ์ ์ํ๋ค.
- ์ฆ, ์ฐ๋ฆฌ๊ฐ ๋ฐ๋ผ๋ ์ธํฐํ์ด์ค๋ค.
- ์ฐ๋ฆฌ๊ฐ ๋ฐ๋ผ๋ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ฉด ์ฐ๋ฆฌ๊ฐ ์ธํฐํ์ด์ค๋ฅผ ์ ์ ์ผ๋ก ํต์ ํ๋ค๋ ์ฅ์ ์ด ์๊ธด๋ค.
- ์ฝ๋ ๊ฐ๋ ์ฑ๋ ๋์์ง๊ณ ์ฝ๋ ์๋๋ ๋ถ๋ช ํด์ง๋ค.
- ๋ฐ๋ผ์ ์ฐ๋ฆฌ๊ฐ ํต์ ํ์ง ๋ชปํ๊ณ ์ ์๋์ง๋ ์์ ์ก์ ๊ธฐ API์์ CommunicationsController๋ฅผ ๋ถ๋ฆฌํ๋ค.
- ์ ์ชฝ ํ์ด ์ก์ ๊ธฐ API๋ฅผ ์ ์ํ ํ์๋ TransmitterAdapter๋ฅผ ๊ตฌํํด ๊ฐ๊ทน์ ๋งค์ ๋ค.
- ADAPTER ํจํด์ผ๋ก API ์ฌ์ฉ์ ์บก์ํํด API๊ฐ ๋ฐ๋ ๋ ์์ ํ ์ฝ๋๋ฅผ ํ ๊ณณ์ผ๋ก ๋ชจ์๋ค.
- ์ด์ ๊ฐ์ ์ค๊ณ๋ ํ ์คํธ๋ ์ฝ๋ค.
- ์ ์ ํ FakeTransmitter ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ฉด CommunicationsController ํด๋์ค๋ฅผ ํ ์คํธํ ์ ์๋ค.
- Transmitter API ์ธํฐํ์ด์ค๊ฐ ๋์จ ๋ค์ ๊ฒฝ๊ณ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์์ฑํด ์ฐ๋ฆฌ๊ฐ API๋ฅผ ์ฌ๋ฐ๋ก ์ฌ์ฉํ๋์ง ํ ์คํธํ ์๋ ์๋ค.
๊นจ๋ํ ๊ฒฝ๊ณ
- ๊ฒฝ๊ณ๋ ๋ณ๊ฒฝ์ด ๋ง๋ค.
- ์ํํธ์จ์ด ์ค๊ณ๊ฐ ์ฐ์ํ๋ค๋ฉด ๋ณ๊ฒฝํ๋๋ฐ ๋ง์ ํฌ์์ ์ฌ์์ ์ด ํ์ํ์ง ์๋ค.
- ์์ฒญ๋ ์๊ฐ๊ณผ ๋ ธ๋ ฅ๊ณผ ์ฌ์์ ์ ์๊ตฌํ์ง ์๋๋ค.
- ํต์ ํ์ง ๋ชปํ๋ ์ฝ๋๋ฅผ ์ฌ์ฉํ ๋๋
- ๋๋ฌด ๋ง์ ํฌ์๋ฅผ ํ๊ฑฐ๋
- ํฅํ ๋ณ๊ฒฝ ๋น์ฉ์ด ์ง๋์น๊ฒ ์ปค์ง์ง ์๋๋ก ๊ฐ๋ณํ ์ฃผ์ํด์ผ ํ๋ค.
- ๊ฒฝ๊ณ์ ์์นํ๋ ์ฝ๋๋ ๊น๋ํ ๋ถ๋ฆฌํ๋ค.
- ๋ํ ๊ธฐ๋์น๋ฅผ ์ ์ํ๋ ํ ์คํธ ์ผ์ด์ค๋ ์์ฑํ๋ค.
- ์ด์ชฝ ์ฝ๋์์ ์ธ๋ถ ํจํค์ง๋ฅผ ์ธ์ธํ๊ฒ ์์์ผ ํ ํ์๋ ์๋ค.
- ํต์ ๊ฐ ๋ถ๊ฐ๋ฅํ ์ธ๋ถ ํจํค์ง์ ์์กดํ๋ ๋์ ํต์ ๊ฐ ๊ฐ๋ฅํ ์ฐ๋ฆฌ ์ฝ๋์ ์์กดํ๋ ํธ์ด ํจ์ฌ ์ข๋ค. ์์นซํ๋ฉด ์ธ๋ถ ์ฝ๋์ ํ๋๋ฆฌ๊ณ ๋ง๋ค.
- ์ธ๋ถ ํจํค์ง๋ฅผ ํธ์ถํ๋ ์ฝ๋๋ฅผ ๊ฐ๋ฅํ ์ค์ฌ ๊ฒฝ๊ณ๋ฅผ ๊ด๋ฆฌํ์.
- Map์์ ๋ดค๋ฏ์ด, ์๋ก์ด ํด๋์ค๋ก ๊ฒฝ๊ณ๋ฅผ ๊ฐ์ธ๊ฑฐ๋ ์๋๋ฉด ADAPTER ํจํด์ ์ด์ฉํด ์ฐ๋ฆฌ๊ฐ ์ํ๋ ์ธํฐํ์ด์ค๋ฅผ ํจํค์ง๊ฐ ์ ๊ณตํ๋ ์ธํฐํ์ด์ค๋ก ๋ณํํ์.
- ์ด๋ ๋ฐฉ๋ฒ์ด๋ ์ฝ๋ ๊ฐ๋ ์ฑ์ด ๋์์ง๋ฉฐ, ๊ฒฝ๊ณ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ ์ผ๊ด์ฑ๋ ๋์์ง๋ฉฐ, ์ธ๋ถ ํจํค์ง๊ฐ ๋ณํ์ ๋ ๋ณ๊ฒฝํ ์ฝ๋๋ ์ค์ด๋ ๋ค.
์ฐธ๊ณ ๋งํฌ
'Java > CleanCode' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CleanCode] 10์ฅ ํด๋์ค (0) | 2023.02.25 |
---|---|
[CleanCode] 9์ฅ ๋จ์ ํ ์คํธ (1) | 2023.02.25 |
[CleanCode] 7์ฅ ์ค๋ฅ ์ฒ๋ฆฌ (1) | 2023.02.25 |
[CleanCode] 6์ฅ ๊ฐ์ฒด์ ์๋ฃ ๊ตฌ์กฐ (0) | 2023.02.25 |
[CleanCode] 5์ฅ ํ์ ๋ง์ถ๊ธฐ (1) | 2023.02.25 |