Factory Method Pattern
개요
- 객체 생성을 해주는 별도의 Class에서 수행
- 생성 코드는 Client에 비공개
구현 방법 - Java
public class main {
public static void main(String[] args) {
Factory f = new Factory();
Doll d1 = f.makeDoll("Blue"); // [1] Class 생성 요청
Doll d2 = f.makeDoll("Red" );
Doll d3 = f.makeDoll("Blue");
d1.push();
d2.push();
d3.push();
}
}
class Factory { // [2] Class 생성
public Doll makeDoll(String name) {
if (name == "Blue") return new BlueDoll();
if (name == "Red") return new RedDoll();
return null;
}
}
interface Doll {
void push();
}
class BlueDoll implements Doll {
@Override
public void push() { System.out.println("Push BlueDoll"); }
}
class RedDoll implements Doll {
@Override
public void push() { System.out.println("Push RedDoll"); }
}
- [1] Class 생성을 위한 Factory를 Call
- [2] 실제 Class 생성을 위한 부분
구현 방법 - Python
class Factory ():
def makeDoll(self, str):
if str == "Blue": return BlueDoll()
elif str == "Red" : return RedDoll()
return None
class BlueDoll():
def push(self):
print("push BlueDoll")
class RedDoll():
def push(self):
print("push RedDoll")
factory = Factory();
d1 = factory.makeDoll("Blue")
d2 = factory.makeDoll("Red")
d3 = factory.makeDoll("Blue")
d1.push()
d2.push()
d3.push()
'Software Architect' 카테고리의 다른 글
[Design Pattern] Singleton Pattern (0) | 2022.03.24 |
---|---|
[Design Pattern] Builder Pattern (0) | 2022.03.24 |
[Design Pattern] GoF Design Pattern 개요 (0) | 2022.03.24 |
[OOAD] UML & 주요 diagram (0) | 2022.03.21 |
[OOAD] 캡슐화, 상속, 다형성, Interface 등 (0) | 2022.03.21 |