공장 설계 모델(2) - 공장 모델을 일일이 열거하다.

2617 단어
공장 설계 모델 (1) - 일반 공장 모델 공장 설계 모델 (2) - 공장 모델을 일일이 열거하여 실현

1. 단순 공장 모델의 핵심


4
  • 공장 역할 4
  • 단순 공장 모델의 핵심은 모든 실례를 만드는 내부 논리를 책임지고 공장류는 외부에서 직접 호출되어 필요한 제품 대상을 만들 수 있다.
    추상 제품 역할
    모든 대상의 부류를 만들고 모든 실례를 설명하는 공통 인터페이스를 담당합니다.
    4
  • 구체적인 제품 역할 4
  • 생성된 구체적인 실례 대상입니다.

    2. 공장 모델을 실현하는 두 가지 방법을 매거한다


    1. 비정상적인 방법을 매거하여 공장 모델을 실현한다
    모든 매거항은 이 매거류의 실례 대상이다. 그러면 하나의 방법을 정의하면 모든 매거항에 대응하는 제품을 생성할 수 있다.
    1. 추상적인 제품 역할
    public interface Car {
        String name();
    }
    

    2. 구체적인 제품 역할
    public class BuickCar implements Car {
        @Override
        public String name() {
            return "This is BuickCar";
        }
    }
    public class FordCar implements Car {
        @Override
        public String name() {
            return "This is FordCar";
        }
    }
    

    3. 제품 공장
    public enum CarFactory {
    
        // 
        FordCar, BuickCar;
    
        public Car create() {
            switch (this) {
                case FordCar:
                    return new FordCar();
                case BuickCar:
                    return new BuickCar();
                default:
                    throw new AssertionError(" ");
            }
        }
    }
    

    4. 호출 방법
        @Test
        public void testStaticFactory() {
            Car car = CarFactory.FordCar.create();
            System.out.println(car.name());
        }
    

    2. 추상적인 방법으로 제품 생성
    매거 유형은 계승할 수 없지만 abstract로 그 방법을 수식할 수 있다. 이때 이 매거는 추상적인 매거 대상이고 매 매거 항목이 스스로 이 방법을 실현해야 한다는 것을 나타낸다.
    1. 공장 방법
    public enum AbstractCarFactory {
    
        FordCar {
            @Override
            public Car create() {
                return new FordCar();
            }
        },
    
        BuickCar {
            @Override
            public Car create() {
                return new BuickCar();
            }
        };
        // 
        public abstract Car create();
    }
    

    2. 호출 클래스
        @Test
        public void testAbstractFactory(){
            Car car = AbstractCarFactory.BuickCar.create();
            System.out.println(car.name());
        }
    

    3. 매거류가 공장 모델의 장점을 실현한다


    1. 오류 호출의 발생을 피한다
    일반적인 정적 공장 모델은 클라이언트의 파라미터를 받아들여 어떤 구체적인 제품의 구축을 선택해야 하는데 이것은 어느새 오류가 발생할 수 있다(예를 들어null값 문제,Class 대상이 존재하지 않는다).그러나 매거 유형이 발생하는 공장 모델은 이 문제가 존재하지 않고 어떤 파라미터를 전달할 필요가 없고 어떤 유형의 제품을 생성할 것인지만 선택하면 된다.
    2. 성능이 좋고 사용이 간편하다
    매거 유형의 계산은 int 유형의 계산을 바탕으로 하는 것으로 이것은 가장 기본적인 조작이며 성능은 당연히 매우 빠르다.
    3. 클래스 간의 결합을 낮춘다
    일반적인 방식으로 이루어진 공장 모델은 생산 방법이 클라스, 스트링, 인트 유형을 받아들이든 클라이언트에게 부담이 될 수 있다. 이런 종류는 고객도가 필요로 하는 것이 아니라 공장 방법의 제한이 반드시 입력해야 하기 때문이다.사실은Lod(최소지식원칙)에 위배된다. 한 대상은 다른 대상에 대해 최소한의 이해를 가져야 한다.

    좋은 웹페이지 즐겨찾기