2012-12-19 5 views
-1

추상 팩토리 디자인 패턴에서 클래스는 컴포지션을 통해 객체 인스턴스화의 책임을 다른 객체에 위임합니다.추상 팩토리 디자인 패턴 이해

몇 가지 예를 들어 설명 할 수 있습니다.

+0

추상 클래스 또는 추상 팩터 리 패턴을 말하고 있습니까? – tom

+0

추상 팩토리 패턴 – user1808932

+0

@OP : 단순 공장 패턴에 익숙합니까? 추상 팩토리는 특정 클래스를 생성 할 수있는 Simple Factory를 생성하는 Simple Factory입니다. :) – SWeko

답변

5

전통적인 예를 들어 말씀 드리겠습니다. UI 라이브러리가 있다고 가정 해보십시오. 단추, 슬라이더, 라디오 단추 등과 같은 다양한 UI 구성 요소가 구현되어 있습니다. 예를 들어 은색, 어두운 색, 밝은 색, 창 모양, gtk 형 등의 다양한 구성 요소를 다른 모양과 느낌으로 사용하고자합니다. 지금 당신은 당신의 동적 구현을 ​​변경할 수있는 구성 요소를 작성해야하는 경우

class AbstractComponentFactory { 

    public abstract Button createButton() { 
     //implementation 
    } 

    public abstract Slider createSlider() { 
     //implementation 
    } 
} 

class SilverComponentFactory extends AbstractFactory { 

    public Button createButton() { 
     Button b = base.createButton(); 
     //customize the button 
    } 

    public Slider createSlider() { 
     Slider b = base.createSlider(); 
     //customize the slider 
    } 

} 


class WindowsComponentFactory extends AbstractFactory { 

    public Button createButton() { 
     Button b = base.createButton(); 
     //customize the button with windows look-and-feel 
    } 

    public Slider createSlider() { 
     Slider b = base.createSlider(); 
     //customize the slider with windows look-and-feel 
    } 

} 

: 추상에서 상속 각 구성 요소의 창조와 자식 클래스에 대한 공통의 일을하게하고 차이만을 지정하는 추상 클래스를 사용할 수 있습니다 추상 공장 :

public void createUI(AbstractComponentFactory f) { 
    Button b = f.createButton(); 
    Slider s = f.createSlider(); 
} 

//.. 
createUI(new SilverComponentFactory()); 

Here 내가 호, 샘플 클래스 다이어그램 그것은 너무 복잡하지 않습니다.