Software Architect
[Design Pattern] Factory Method Pattern
이반&핫버드
2022. 3. 24. 08:04
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()