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

 
(같은 사용자의 중간 판 8개는 보이지 않습니다)
2번째 줄: 2번째 줄:
;abstract factory pattern
;abstract factory pattern
;추상 팩토리 패턴
;추상 팩토리 패턴
*객체를 통해 제품을 생산
* [[생성 패턴]]의 하나
*부품을 조립해서 제품을 만드는 구조
* 객체를 통해 제품을 생산
*Client의 인스턴스가 ConcreteFactory의 인스턴스에 객체 생성을 맡김
* 부품을 조립해서 제품을 만드는 구조
*객체 구성(composition)
* 팩토리 객체에 객체 생성을 [[위임 (OOP)|위임]]한다.
* Client의 인스턴스는 추상 팩토리를 이용하며 추상 팩토리는 구상 팩토리(ConcreteFactory)에 객체 생성을 맡긴다.
* Client는 추상 팩토리를 통해 추상 Product 타입의 객체를 얻는다.
* [[객체 컴포지션]]을 활용한다.


http://upload.wikimedia.org/wikipedia/commons/thumb/6/67/Abstract_Factory_UML_class_diagram.svg/800px-Abstract_Factory_UML_class_diagram.svg.png
http://upload.wikimedia.org/wikipedia/commons/thumb/6/67/Abstract_Factory_UML_class_diagram.svg/800px-Abstract_Factory_UML_class_diagram.svg.png
20번째 줄: 23번째 줄:
     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월 25일 (월) 01:27 기준 최신판

1 개요[ | ]

abstract factory pattern
추상 팩토리 패턴
  • 생성 패턴의 하나
  • 객체를 통해 제품을 생산
  • 부품을 조립해서 제품을 만드는 구조
  • 팩토리 객체에 객체 생성을 위임한다.
  • Client의 인스턴스는 추상 팩토리를 이용하며 추상 팩토리는 구상 팩토리(ConcreteFactory)에 객체 생성을 맡긴다.
  • Client는 추상 팩토리를 통해 추상 Product 타입의 객체를 얻는다.
  • 객체 컴포지션을 활용한다.

 

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 }}