Skip to content

Latest commit

ย 

History

History
55 lines (41 loc) ยท 1.16 KB

Design Pattern_Factory Method.md

File metadata and controls

55 lines (41 loc) ยท 1.16 KB

Design Pattern - Factory Method Pattern


ํ•œ ์ค„ ์„ค๋ช… : ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๋ถ€๋ถ„์„ 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์ด ๋‹ค๋ฅด๊ฒŒ ์„ค๊ณ„๋จ.


์ •๋ฆฌํ•˜๋ฉด, ์ƒ์„ฑํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๋ณ„๋„๋กœ ๋‘”๋‹ค. ๊ทธ๋ฆฌ๊ณ , ๊ทธ ๊ฐ์ฒด์— ๋„˜์–ด์˜ค๋Š” ๊ฐ’์— ๋”ฐ๋ผ์„œ, ๋‹ค๋ฅธ ๋กœ๋ด‡ (ํ”ผ์ž)๋ฅผ ๋งŒ๋“ค์–ด ๋‚ธ๋‹ค.