02 23 가지 디자인 모델 의 공장 모델

13433 단어 디자인 모드
02 23 가지 디자인 모델 의 공장 모델
핵심 역할
창조 자 와 호출 자의 분 리 를 실현 하 다
분류 하 다.
  • 단순 공장 모델
  • 공장 방법 모델
  • 추상 적 인 공장 모델
  • 세 가지 공장 모델
    단순 공장 모드
    우세 열세
  • 간단 한 공장 모델 도 정태 공장 모델 이 라 고 한다. 즉, 공장 류 는 보통 정태 적 인 방법 을 사용 하고 받 은 매개 변수 에 따라 서로 다른 대상 인 스 턴 스
  • 를 되 돌려 준다.
  • 신제품 (새로운 기능) 을 추가 하 는 데 무력 합 니 다!코드 를 수정 하지 않 으 면 확장 할 수 없습니다.개폐 원칙 불만족
  • Car 인터페이스
    package factory.simple;
    
    /**
     * @author SIMBA1949
     * @date 2019/6/6 10:49
     */
    public interface Car {
    
    	void run();
    }
    

    Audi 클래스 구현 Car 인터페이스
    package factory.simple;
    
    /**
     * @author SIMBA1949
     * @date 2019/6/6 10:50
     */
    public class Audi implements Car {
    	public void run() {
    		System.out.println("audi running");
    	}
    }
    

    Lamborghini 클래스 구현 Car 인터페이스
    package factory.simple;
    
    /**
     * @author SIMBA1949
     * @date 2019/6/6 10:51
     */
    public class Lamborghini implements Car {
    	public void run() {
    		System.out.println("Lamborghini running");
    	}
    }
    

    단순 공장 Simple Factory
    package factory.simple;
    
    /**
     *       (      )
     *
     * @author SIMBA1949
     * @date 2019/6/6 10:42
     */
    public class SimpleFactory {
    
    	public static Car buildCar(String carType){
    		if ("audi".equalsIgnoreCase(carType)){
    			return new Audi();
    		}else if("lamborghini".equalsIgnoreCase(carType)){
    			return new Lamborghini();
    		}
    		return null;
    	}
    }
    

    공장 방법 모델
    우세 열세
    추상 공장 인터페이스
    package factory.method;
    
    /**
     * @author SIMBA1949
     * @date 2019/6/6 11:04
     */
    public interface MethodFactory {
    
    	Car buildCar();
    }
    

    Car 인터페이스
    package factory.method;
    
    /**
     * @author SIMBA1949
     * @date 2019/6/6 10:49
     */
    public interface Car {
    
    	void run();
    }
    

    Audi 클래스 구현 Car 인터페이스
    package factory.method;
    
    /**
     * @author SIMBA1949
     * @date 2019/6/6 10:50
     */
    public class Audi implements Car {
    	public void run() {
    		System.out.println("audi running");
    	}
    }
    

    AudiFactory 공장 류 추상 공장 인터페이스 실현
    package factory.method;
    
    /**
     * @author SIMBA1949
     * @date 2019/6/6 11:04
     */
    public class AudiFactory implements MethodFactory {
    	public Car buildCar() {
    		return new Audi();
    	}
    }
    

    Lamborghini 클래스 구현 Car 인터페이스
    package factory.method;
    
    /**
     * @author SIMBA1949
     * @date 2019/6/6 10:51
     */
    public class Lamborghini implements Car {
    	public void run() {
    		System.out.println("Lamborghini running");
    	}
    }
    

    람 보 르 기니 공장 류 추상 공장 인터페이스 실현
    package factory.method;
    
    /**
     * @author SIMBA1949
     * @date 2019/6/6 11:04
     */
    public class LamborghiniFactory implements MethodFactory {
    	public Car buildCar() {
    		return new Lamborghini();
    	}
    }
    

    클 라 이언 트 테스트
    package factory.method;
    
    /**
     * @author SIMBA1949
     * @date 2019/6/6 11:05
     */
    public class MethodFactoryClient {
    	public static void main(String[] args) {
    		Car audi = new AudiFactory().buildCar();
    		Car lamborghini = new LamborghiniFactory().buildCar();
    	}
    }
    

    좋은 웹페이지 즐겨찾기