• 设计模式之建造者模式 Builder


    • 本质与使用场景

    public interface AirShipBuilder {
    
        Engine builderEngine();
        OrbitalModule builderOrbitalModule();
        EscapeTower  builderEscapeTower();
    
    }
    
    public class SxtAirShipBuilder implements AirShipBuilder{  //StringBuilder,以后学习XML解析中,JDOM库中的类:DomBuilder,SaxBuilder
    
        @Override
        public Engine builderEngine() {
            System.out.println("构建尚学堂牌发动机");
            return new Engine("尚学堂牌发动机");
        }
    
        @Override
        public OrbitalModule builderOrbitalModule() {
            System.out.println("构建尚学堂牌轨道舱");
            return new OrbitalModule("尚学堂牌轨道舱");
        }
    
        @Override
        public EscapeTower builderEscapeTower() {
            System.out.println("构建尚学堂牌逃逸塔");
            return new EscapeTower("尚学堂牌逃逸塔");
        } 
    
    }
    飞船Builder接口及其实现类
    public interface AirShipDirector {
        
        AirShip directAirShip();
    }
    
    public class SxtAirShipDirector implements AirShipDirector{
    
        private AirShipBuilder builder;
            
        public SxtAirShipDirector(AirShipBuilder builder) {
            super();
            this.builder = builder;
        }
    
    
        @Override
        public AirShip directAirShip() {
            
            Engine e = builder.builderEngine();
            OrbitalModule o  = builder.builderOrbitalModule();
            EscapeTower et = builder.builderEscapeTower();
            
            //装配
            AirShip ship = new AirShip();
            ship.setEngine(e);
            ship.setEscapeTower(et);
            ship.setOrbitalModule(o);
            
            return ship;
        }
    
    }
    飞船组装Director接口及其实现
    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) {
            super();
            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) {
            super();
            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) {
            super();
            this.name = name;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    飞船类
    public class Client {
        
        public static void main(String[] args) {
            AirShipDirector director = new SxtAirShipDirector(new SxtAirShipBuilder());
            AirShip ship = director.directAirShip();
            System.out.println(ship.getEngine().getName());
            
            ship.launch();
        }
    }
    调用
  • 相关阅读:
    从训练数据中随机抽取一打数据的好方法
    黄金坑的说明
    Chainer的初步学习
    split和strip的使用
    转载:configure执行流程(1.5.2)《深入理解Nginx》(陶辉)
    转载:编译安装Nginx(1.5.1)《深入理解Nginx》(陶辉)
    转载:编译安装Nginx(1.4)《深入理解Nginx》(陶辉)
    转载:获取Nginx源码(1.3.5)《深入理解Nginx》(陶辉)
    转载:Linux内核参数的优化(1.3.4)《深入理解Nginx》(陶辉)
    转载:磁盘目录(1.3.3)《深入理解Nginx》(陶辉)
  • 原文地址:https://www.cnblogs.com/qingdaofu/p/7466216.html
Copyright © 2020-2023  润新知