디자인 모델 의 공장 모델 VS 추상 공장 모델

7630 단어 JAVA 디자인 모드
공장 모델
공장 모델 (Factory Pattern) 은 자바 에서 가장 자주 사용 하 는 디자인 모델 중의 하나 이다.이런 유형의 디자인 모델 은 창설 형 모델 에 속 하 는데, 이것 은 창설 대상 을 만 드 는 가장 좋 은 방법 을 제공한다.공장 모드 에서 우 리 는 대상 을 만 들 때 클 라 이언 트 에 대한 창설 논 리 를 노출 하지 않 고 공 통 된 인 터 페 이 스 를 사용 하여 새로 만 든 대상 을 가리킨다.
다음은 자동차 생산 공장 을 통 해 공장 모델 의 장단 점 을 체험 해 보 자.
(1) 자동차 인터페이스 정의
//        
public interface ICar {
    //  
    void running();
}

(2) 세 개의 실체 류 를 정의 하여 자동차 인 터 페 이 스 를 실현 한다.
//    
public class Audi implements ICar {
    @Override
    public void running() {
        System.out.println("    ,  97#    ");
    }
}
//   
public class Bus implements ICar {
    @Override
    public void running() {
        System.out.println("     ,      。");
    }
}
//   
public class Tractor implements ICar {
    @Override
    public void running() {
        System.out.println("     ,      。");
    }
}

(3) 공장 류 를 정의 하여 자동 차 를 생산 한다.
//      
public class CarFactory {
    public static ICar createCar(String type){
        ICar car = null ;
        switch (type){
            case "bus" :
                car = new Bus();
                break ;
            case "audi" :
                car = new Audi();
                break ;
            case "tractor" :
                car = new Tractor();
                break ;
        }
        return car ;
    }
}

(4) 클 라 이언 트
public class Main {
    public static void main(String[] args) {
        //          ,        
        ICar bus = CarFactory.createCar("audi");
        bus.running();
    }
}

실행 결과
        ,  97#    

우리 가 예상 한 결과 에 이 르 렀 음 이 분명 하 다. 생산 된 자동 차 를 바 꾸 려 면 클 라 이언 트 의 CarFactory. createcar () 방법 중의 인 자 를 수정 하면 된다.
장점: 1. 호출 자가 대상 을 만 들 려 면 이름 만 알 면 됩 니 다.2. 확장 성 이 높 습 니 다. 제품 하 나 를 추가 하려 면 공장 류 만 확장 하면 됩 니 다.3. 제품 의 구체 적 인 실현 을 차단 하고 호출 자 는 제품 의 인터페이스 에 만 관심 을 가진다.단점: 한 제품 을 추가 할 때마다 구체 적 인 유형 과 대상 을 추가 하여 공장 을 실현 하여 시스템 중의 개 수 를 배로 증가 시 키 고 어느 정도 에 시스템 의 복잡 도 를 증가 하 는 동시에 시스템 의 구체 적 인 의존 도 를 증가 시 켰 다.이것 은 결코 무슨 좋 은 일이 아니다.
2. 추상 적 인 공장 모델
추상 적 인 공장 모델 (Abstract Factory Pattern) 은 하나의 슈퍼 공장 을 둘러싸 고 다른 공장 을 만 드 는 것 이다.이 슈퍼 공장 은 다른 공장 의 공장 이 라 고도 부른다.이런 유형의 디자인 모델 은 창설 형 모델 에 속 하 는데, 이것 은 창설 대상 을 만 드 는 가장 좋 은 방법 을 제공한다.추상 적 인 공장 모델 에서 인 터 페 이 스 는 관련 대상 을 만 드 는 공장 으로 명시 적 으로 그들의 종 류 를 지정 할 필요 가 없다.모든 생 성 된 공장 은 공장 모델 에 따라 대상 을 제공 할 수 있다.
이어서 자동차 생산 공장 은 계속 되 었 다.
(1) 자동차 생산 공장 을 추상적으로 추정한다.
//    
public interface ICarFactory {
    ICar createCar();
}

(2) 세 개의 공장 을 정의 하고 추상 적 인 공장 을 실현 한다.
//      
public class AudiFactory implements ICarFactory{
    @Override
    public ICar createCar() {
        return new Audi();
    }
}
//       
public class BusFactory implements ICarFactory{
    @Override
    public ICar createCar() {
        return new Bus();
    }
}
//       
public class TractorFactory implements ICarFactory{
    @Override
    public ICar createCar() {
        return new Tractor();
    }
}

클 라 이언 트 테스트
public class Main {
    public static void main(String[] args) {
        ICarFactory factory = new AudiFactory(); //          
        ICar car = factory.createCar(); //        
        car.running();  //    
    }
}

우 리 는 이때 벤츠 차 를 추가 하려 면 공장 류 의 어떠한 코드 도 수정 할 필요 가 없다 는 것 을 알 게 되 었 다. 벤츠 류, 벤츠 공장 류 만 증가 하면 된다. 추상 적 인 공장 모델 은 공장 모델 에 비해 개방 - 폐쇄 원칙 에 더욱 부합 되 지만 더 많은 유형 도 증가 했다.

좋은 웹페이지 즐겨찾기