3. 창설자 모드(디자인 모드 노트)

4624 단어

장면

  • 우리는 복잡한 제품을 건설해야 한다.예를 들면 신주비행선.이 복잡한 제품의 생성에 문제가 하나 있습니다. 이 서브어셈블리를 조립하는 데는 절차가 있습니까?
  • 실제 개발에서 우리가 필요로 하는 대상을 구축할 때도 매우 복잡하고 처리해야 할 절차가 많다.

  • 2. 건설 모델의 본질

  • 개체 서브어셈블리를 분리한 개별 구조builder와 어셈블리Director가 분리됩니다.그리하여 복잡한 대상을 구성할 수 있다.이 모델은 특정한 대상의 구축 과정이 복잡한 상황에서 사용된다.
  • 구축과 조립의 결합을 실현했기 때문에 서로 다른 구축기, 같은 조립도 서로 다른 대상을 만들 수 있다.같은 구축기, 서로 다른 조립 순서도 서로 다른 대상을 만들 수 있다.즉, 구축 알고리즘, 조립 알고리즘의 결합을 실현하고 더욱 좋은 복용을 실현했다.
  • AirShip.java
    package cn.itcast.day232.build;
    // 
    public class AirShip {
        // 
        private OrbitalModule orbitalModule;// 
        
        private Engine engine;// 
        
        private EscapeTower escapeTower;// 
        
        // 
        public void launch(){
            System.out.println(" ");
        }
    
        public OrbitalModule getOrbitalModule() {
            return orbitalModule;
        }
    
        public void setOrbitalModule(OrbitalModule orbitalModule) {
            this.orbitalModule = orbitalModule;
        }
    
        public Engine getEngine() {
            return engine;
        }
    
        public void setEngine(Engine engine) {
            this.engine = engine;
        }
    
        public EscapeTower getEscapeTower() {
            return escapeTower;
        }
    
        public void setEscapeTower(EscapeTower escapeTower) {
            this.escapeTower = escapeTower;
        }
    }
    
    class OrbitalModule{
        private String name ;
    
        public OrbitalModule(String name) {
            this.name = name;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    
    class Engine{
        private String name ;
    
        public Engine(String name) {
            this.name = name;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    
    class EscapeTower{
        private String name;
    
        public EscapeTower(String name) {
            this.name = name;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    

    설명: 비행선이 엔진, 엔진, 탈출탑 등 부품을 필요로 하는 것을 볼 수 있다.AirShipBuilder.java
    package cn.itcast.day232.build;
    // 
    public interface AirShipBuilder {
        
        public Engine buildEngine();
        
        public OrbitalModule buildOrbitalModule();
        
        public EscapeTower buildEscapeTower();
    }
    
    SzAirShipBuilder.java
    package cn.itcast.day232.build;
    // 
    public class SzAirShipBuilder implements AirShipBuilder {
    
        @Override
        public Engine buildEngine() {
            System.out.println(" ");
            return new Engine(" ");// 
        }
    
        @Override
        public OrbitalModule buildOrbitalModule() {
            System.out.println(" ");
            return new OrbitalModule(" ");
        }
    
        @Override
        public EscapeTower buildEscapeTower() {
            System.out.println(" ");
            return new EscapeTower(" ");
        }
    }
    

    설명: 위쪽은 특정 비행선(신주비행선)의 구체적인 건설자의 실현이고 건설자는 주로 특정 대상을 위해 각종 필요한 부품을 구축한다.AirShipDirector.java
    package cn.itcast.day232.build;
    // 
    public interface AirShipDirector {
        public AirShip directAirShip();// 
    }
    
    SzAirShipDirector.java
    package cn.itcast.day232.build;
    // 
    public class SzAirShipDirector implements AirShipDirector {
    
        private AirShipBuilder builder;// 
        
        public SzAirShipDirector(AirShipBuilder builder) {
            this.builder = builder;
        }
    
        @Override
        public AirShip directAirShip() {
            // 
            Engine engine = builder.buildEngine();
            OrbitalModule orbitalModule = builder.buildOrbitalModule();
            EscapeTower escapeTower = builder.buildEscapeTower();
            
            // 
            AirShip ship = new AirShip();
            ship.setEngine(engine);
            ship.setOrbitalModule(orbitalModule);
            ship.setEscapeTower(escapeTower);
            
            // 
            return ship;
        }
    }
    

    설명: 예를 들어 위에서 특정한 조립자(신주비행선 조립자)의 실현, 조립자의 주요 기능은 건설자가 구축한 각 부품을 조립하여 구체적인 대상을 실현하는 것이다.Client.java
    package cn.itcast.day232.build;
    public class Client {
        public static void main(String[] args) {
            
            AirShipDirector director = new SzAirShipDirector(new SzAirShipBuilder());
            
            AirShip airShip = director.directAirShip();// 
            
            System.out.println(airShip.getEngine().getName());
            
            airShip.launch();
        }
    }
    

    설명: 위에서 보듯이 우리가 비행선이 필요할 때 조립 배치와 접촉만 하면 된다.그리고 우리가 필요로 하는 실례 대상을 얻을 수 있다.

    좋은 웹페이지 즐겨찾기