design pattern #2 Creational pattern - Abstract Factory
Factory Method 의 좀더 큰 버젼이다. 비슷한 유형의 product 를 하나로 묶어 이것을 interface 로 만들고, 2개 이상의 interface 를 다시 묶어 interface 로 만든다 Factory Method 의 아이디어와 방식이 비슷한데, creator 가 product 의 abstract type 을 리턴 한다는 것이다. 아래 예시를 보면, button, checkbox 각각 Mac, Window 버젼이 있다. 그리고 이 두 UI 를 abstract 로 묶은 GUIFactory 도 각각 Mac, Window 버젼이 있다. 프로그램 시작시 state 를 구분해서 Mac, 혹은 Window 버젼의 GUIFactory 를 생성한다. 장단점은 factory method 와 같다. public interface Button { void paint(); } public class MacOSButton implements Button { @Override public void paint() { // implement } } public class WindowsButton implements Button { @Override public void paint() { // implement } } public interface Checkbox { void paint(); } public class MacOSCheckbox implements Checkbox { @Override public void paint() { // implement } } public class WindowsCheckbox implements Checkbox { @Override public void paint() { // implement ...