"추상 팩토리 패턴"의 두 판 사이의 차이

20번째 줄: 20번째 줄:
     public static GUIFactory createOsSpecificFactory() {
     public static GUIFactory createOsSpecificFactory() {
         if (System.getProperty("os.name").startsWith("Windows")) return new WinFactory();
         if (System.getProperty("os.name").startsWith("Windows")) return new WinFactory();
         else return new OSXFactory();
         return new OSXFactory();
     }
     }
}
}

2022년 4월 24일 (일) 23:48 판

1 개요

abstract factory pattern
추상 팩토리 패턴
  • 객체를 통해 제품을 생산
  • 부품을 조립해서 제품을 만드는 구조
  • Client의 인스턴스가 ConcreteFactory의 인스턴스에 객체 생성을 맡김
  • 객체 구성(composition)

 

2 예제 (java)

/* GUIFactory example -- */

public class ApplicationRunner {
    public static void main(String[] args) {
        new Application(createOsSpecificFactory());
    }
 
    public static GUIFactory createOsSpecificFactory() {
        if (System.getProperty("os.name").startsWith("Windows")) return new WinFactory();
        return new OSXFactory();
    }
}
 
interface Button {
    void paint();
}
 
interface GUIFactory {
    Button createButton();
}
 
class WinFactory implements GUIFactory {
    public Button createButton() {
        return new WinButton();
    }
}
 
class OSXFactory implements GUIFactory {
    public Button createButton() {
        return new OSXButton();
    }
}
 
class WinButton implements Button {
    public void paint() {
        System.out.println("I'm a WinButton");
    }
}
 
class OSXButton implements Button {
    public void paint() {
        System.out.println("I'm an OSXButton");
    }
}
 
class Application {
    public Application(GUIFactory factory) {
        Button button = factory.createButton();
        button.paint();
    }
}

3 같이 보기

4 참고

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}