ํ ์ค ์ค๋ช : ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๋ถ๋ถ์ Sub class์ ๋งก๊ธฐ๋ ํจํด.
Robot (์ถ์ ํด๋์ค)
โ ใด SuperRobot
โ ใด PowerRobot
RobotFactory (์ถ์ ํด๋์ค)
โ ใด SuperRobotFactory
โ ใด ModifiedSuperRobotFactory
์ฆ Robot์ด๋ผ๋ ํด๋์ค๋ฅผ RobotFactory์์ ์์ฑํจ.
- RobotFactory ํด๋์ค ์์ฑ
public abstract class RobotFactory {
abstract Robot createRobot(String name);
}
- SuperRobotFactory ํด๋์ค ์์ฑ
public class SuperRobotFactory extends RobotFactory {
@Override
Robot createRobot(String name) {
switch(name) {
case "super" :
return new SuperRobot();
case "power" :
return new PowerRobot();
}
return null;
}
}
์์ฑํ๋ ํด๋์ค๋ฅผ ๋ฐ๋ก ๋ง๋ฌ...
๊ทธ ํด๋์ค๋ factory ํด๋์ค๋ฅผ ์์ํ๊ณ ์๊ธฐ ๋๋ฌธ์, ๋ฐ๋์ createRobot์ ์ ์ธํด์ผ ํจ.
name์ผ๋ก ๊ฑด๋์ค๋ ๊ฐ์ ๋ฐ๋ผ์, ์์ฑ๋๋ Robot์ด ๋ค๋ฅด๊ฒ ์ค๊ณ๋จ.
์ ๋ฆฌํ๋ฉด, ์์ฑํ๋ ๊ฐ์ฒด๋ฅผ ๋ณ๋๋ก ๋๋ค. ๊ทธ๋ฆฌ๊ณ , ๊ทธ ๊ฐ์ฒด์ ๋์ด์ค๋ ๊ฐ์ ๋ฐ๋ผ์, ๋ค๋ฅธ ๋ก๋ด (ํผ์)๋ฅผ ๋ง๋ค์ด ๋ธ๋ค.