Abstract Factory Pattern이란
추상 팩토리 패턴은 많은 수의 연관된 서브 클래스를 특정 그룹으로 묶어 한번에 교체할 수 있도록 만든 패턴.
예로 안드로이드 버전에 따라 지원하는 기능이 다르다면 추상 팩토리 패턴을 사용해 업데이트하면 버전별 기능을 통합적으로 변경 할 수 있다.
factory method pattern과 유사하지만 fatory를 좀 더 생산적으로 만들 수 있다.
기존 팩토리 패턴에서와 달리 if-else 구문을 없애고 sub class마다 factory class를 가지게한다.
Abstract Factory에서는 input factory class를 통해 해당 sub class를 반환한다.
MachineA, MachineB
public interface MachieA { public void process(); } |
|||||||||
public class MachineA1 implements MachineA { |
|||||||||
@Override public void process() { System.out.println("execute MachineA1"); } |
|||||||||
} |
|||||||||
public class MachineA2 implements MachineA |
|||||||||
{ |
|||||||||
@Override public void process() |
|||||||||
{ System.out.println("execute MachineA2"); } |
|||||||||
} |
public interface MachieB { public void process(); } | |||||||||
public class MachineB1 implements MachineB { | |||||||||
@Override public void process() { System.out.println("execute MachineB1"); } | |||||||||
} | |||||||||
public class MachineB2 implements MachineB | |||||||||
{ | |||||||||
@Override public void process() | |||||||||
{ System.out.println("execute MachineB2"); } | |||||||||
} |
MachineFactory
public interface MachieFactory { public MachineA getMachineA(); public MachineB getMachineB(); } | |||||||||
public class MachieFactoryA implements MachieFactory { | |||||||||
@Override public MachineA getMachineA() { return new MachineA1(); } @Override public MachineB getMachineB() { return new MachineB1(); } | |||||||||
} | |||||||||
public class MachieFactoryB implements MachieFactory | |||||||||
{ | |||||||||
@Override public MachineA getMachineA() { return new MachineA2(); } @Override public MachineB getMachineB() { return new MachineB2(); } | |||||||||
} |
Main Program
public class FactoryMain { public static void main(String[] args) { MachineFactory machineFactoryA = new MachineFactory(); machineFactoryA.getMachineA().process();
machineFactoryB.getMachineA().process(); } } |
Reference
https://jdm.kr/blog/192
'프로그래밍 > 디자인 패턴(프로그래밍)' 카테고리의 다른 글
[Design Pattern]Prototype Pattern이란? (0) | 2019.01.17 |
---|---|
[Design Pattern]Builder Pattern이란? (0) | 2019.01.17 |
[Design Pattern]Factory Method Pattern이란? (0) | 2019.01.17 |
[Design Pattern]Singleton이란? (0) | 2019.01.17 |
[프로그래밍]Design Pattern Outline, 디자인 패턴이란? (0) | 2019.01.16 |
댓글