창설 모드 - 추상 공장 모드

4126 단어 추상 공장 모델

1.유래


공장 방법 모델에서 하나의 공장은 하나의 구체적인 제품만 만들 수 있다.일반적으로 우리가 필요로 하는 제품은 다양하다. 예를 들어 텔레비전 매장에는 각종 브랜드의 텔레비전이 있다.(이럴 때는 우리의 추상적인 공장 모델이 필요하다)

2. 정의


Abstract Factory Pattern(Abstract Factory Pattern): 특정 클래스를 지정하지 않고 관련 또는 상호 의존 객체를 만드는 일련의 인터페이스를 제공합니다.추상 플랜트 모드는 Kit 모드라고도 하며 객체 작성 모드에 속합니다.

3. 코드의 실현


품목:
//     
public interface Engine {    
  
}    
public class EngineA extends Engine{    
    public EngineA(){    
        System.out.println(" -->EngineA");    
    }    
}    
public class EngineBextends Engine{    
    public EngineB(){    
        System.out.println(" -->EngineB");    
    }    
}    
  
//     
public interface Aircondition {    
  
}    
public class AirconditionA extends Aircondition{    
    public AirconditionA(){    
        System.out.println(" -->AirconditionA");    
    }    
}    
public class AirconditionB extends Aircondition{    
    public AirconditionB(){    
        System.out.println(" -->AirconditionB");    
    }    
}   
공장 클래스 생성:
//     
public interface AbstractFactory {    
    //   
    public Engine createEngine();  
    //    
    public Aircondition createAircondition();   
}    
  
  
// 320     
public class FactoryBMW320 implements AbstractFactory{    
        
    @Override    
    public Engine createEngine() {      
        return new EngineA();    
    }    
    @Override    
    public Aircondition createAircondition() {    
        return new AirconditionA();    
    }    
}    
// 523   
public class FactoryBMW523 implements AbstractFactory {    
    
     @Override    
    public Engine createEngine() {      
        return new EngineB();    
    }    
    @Override    
    public Aircondition createAircondition() {    
        return new AirconditionB();    
    }    
  
  
}   

사용자 구매:
public class Customer {    
    public static void main(String[] args){    
        // 320   
        FactoryBMW320 factoryBMW320 = new FactoryBMW320();    
        factoryBMW320.createEngine();  
        factoryBMW320.createAircondition();  
            
        // 523     
        FactoryBMW523 factoryBMW523 = new FactoryBMW523();    
        factoryBMW320.createEngine();  
        factoryBMW320.createAircondition();  
    }    
}  

4. 모드의 장점


추상적인 공장 모델은 구체적인 유형의 생성을 분리하여 고객들이 무엇이 만들어졌는지 알 필요가 없다.이런 격리로 인해 구체적인 공장을 교체하는 것은 상대적으로 쉬워졌다.모든 구체적인 공장은 추상적인 공장에서 정의된 공공 인터페이스를 실현했기 때문에 구체적인 공장의 실례를 바꾸기만 하면 어느 정도에 전체 소프트웨어 시스템의 행위를 바꿀 수 있다.또한 추상 공장 모델을 응용하면 높은 내부 집합과 낮은 결합의 디자인 목적을 실현할 수 있기 때문에 추상 공장 모델은 광범위하게 응용되었다
한 제품족의 여러 대상이 함께 작업하도록 설계되었을 때 클라이언트는 시종일관 같은 제품족의 대상만 사용할 수 있다.이것은 현재 환경에 따라 그 행위를 결정해야 하는 일부 소프트웨어 시스템에 있어 매우 실용적인 디자인 모델이다
새로운 구체적인 공장과 제품족을 늘리는 것은 매우 편리하다. 기존의 시스템을 수정할 필요가 없고'개폐원칙'에 부합된다

5. 패턴의 단점


새로운 제품 대상을 추가할 때 추상 공장을 확장하여 새로운 종류의 제품을 생산하기 어렵다. 이것은 추상 공장 역할에 창설될 수 있는 모든 제품 집합을 규정했기 때문이다. 새로운 종류의 제품을 지원하려면 이 인터페이스를 확장해야 한다는 것을 의미한다. 이것은 추상 공장 역할과 모든 하류에 대한 수정과 관련되어 비교적 큰 불편을 가져올 것이다
개폐원칙의 경사성(새로운 공장과 제품족을 늘리는 것은 쉽고 새로운 제품의 등급 구조를 늘리는 것은 번거롭다)

6. 장면 적용


하나의 시스템은 제품 유형의 실례가 어떻게 만들어지고 조합되고 표현되는지에 의존해서는 안 된다. 이것은 모든 유형의 공장 모델에 중요한 것이다
시스템에는 한 개 이상의 제품족이 있는데, 매번 그 중의 한 제품족만 사용한다
같은 제품족에 속하는 제품은 함께 사용할 것이다. 이 구속은 반드시 시스템의 디자인에 나타나야 한다
시스템은 하나의 제품 유형의 라이브러리를 제공하여 모든 제품이 같은 인터페이스로 나타나서 클라이언트가 구체적인 실현에 의존하지 않게 한다

단순 공장 모델, 공장 방법 모델, 아니면 추상적인 공장 모델을 총결하다


그들은 모두 공장 모델에 속하고 형식과 특징도 매우 비슷하다. 그들의 최종 목적은 모두 결합을 풀기 위해서이다. 그래서 나는 구체적으로 사용할 때도 완전히 구분할 필요가 없다. 주로 목적을 달성하는 것이다. - 결합도를 낮추는 것이다.그들 사이의 변화는 종종 사람들로 하여금 종잡을 수 없게 하기 때문이다.분명히 사용된 공장 방법 모델은 새로운 수요가 오면 조금만 수정하고 새로운 방법을 추가한 후에 클래스 중의 제품이 서로 다른 등급 구조의 제품족을 구성하기 때문에 추상적인 공장 모델이 된다는 것을 자주 발견할 수 있다.추상적인 공장 모델에 대해 하나의 방법을 줄여서 제공한 제품이 제품족을 구성하지 않게 하면 공장 방법 모델로 변한다.
참조 자료:http://design-patterns.readthedocs.io/zh_CN/latest/creational_patterns/abstract_factory.html
                   http://blog.csdn.net/jason0539/article/details/44976775

좋은 웹페이지 즐겨찾기