반응형
학습 목표
· 팩토리 메서드 패턴
· 추상 팩터리 패턴
· 팩토리 메서드 패턴 vs 추상 팩토리 패턴
팩토리 메서드 패턴
https://scshim.tistory.com/417
추상 팩터리 메서드
· 메서드의 호출에 대한 반환값으로 객체를 생산하는 디자인 패턴
· 사용 이유:
- 어떤 객체를 생성할지 예상이 불가능한 상황에서, 서로 다른 데이터에 따라 서로 다른 객체를 생성할 수 있음
- 공통 분모를 가지는 부모 클래스 또는 인터페이스를 데이터를 바탕으로 구성할 수 있음
- 복잡한 객체를 인스턴스화 하는 논리적인 로직을 따로 분리할 수 있음
▶ 예시 - OS에 따라 서로 다른 버튼을 생성하는 프로그램
interface IButton {
void Paint();
}
interface IGUIFactory {
IButton CreateButton();
}
class WinFactory implements IGUIFactory {
public IButton CreateButton() {
return new WinButton();
}
}
class OSXFactory implements IGUIFactory {
public IButton CreateButton() {
return new OSXButton();
}
}
class WinButton implements IButton {
public void Paint() {
//Render a button in a Windows style
}
}
class OSXButton implements IButton {
public void Paint() {
//Render a button in a Mac OS X style
}
}
class Program {
static void Main() {
var appearance = Settings.Appearance;
IGUIFactory factory;
switch (appearance) {
case Appearance.Win:
factory = new WinFactory();
break;
case Appearance.OSX:
factory = new OSXFactory();
break;
default:
throw new System.NotImplementedException();
}
var button = factory.CreateButton();
button.Paint();
}
}
· 추상 팩터리 패턴 클래스 다이어그램

팩토리 메서드 패턴 vs 추상 팩토리 패턴
· 팩토리 메서드 패턴은 하나의 메서드에서 여러 개의 객체를 생성하는 패턴
· 하나의 오브젝트가 하나의 객체를 생성하는 패턴
참고
https://huisam.tistory.com/entry/AbstractFactory?category=697928
https://ko.wikipedia.org/wiki/추상_팩토리_패턴
반응형
댓글