zoukankan      html  css  js  c++  java
  • java设计模式--建造者模式

    建造模式是将复杂的内部创建封装在内部,对于外部调用的人来说,只需要传入建造者和建造工具,对于内部是如何建造成成品的,调用者无需关心。

    举个例子:汽车的生产

    /**
     * 构建汽车
     * @author Administrator
     *
     */
    public class Car {
        //企业发动机
        private Fadongji fadongji;
        //模型
        private Moju moju;
        
        /**
         * 运行汽车
         */
        public void run(){
            System.out.println("运行汽车");
            
        }
        
        public Fadongji getFadongji() {
            return fadongji;
        }
        
        public void setFadongji(Fadongji fadongji) {
            this.fadongji = fadongji;
        }
        
        public Moju getMoju() {
            return moju;
        }
        
        public void setMoju(Moju moju) {
            this.moju = moju;
        }
    }
    
    /**
     * 发动机类
     * @author Administrator
     *
     */
    class Fadongji{
        String name;
        public Fadongji(String name) {
            super();
            this.name = name;
        }
        
    }
    
    //模具
    class Moju{
        String name;
        public Moju(String name) {
            super();
            this.name = name;
        }
        
    }

    建造者

    /**
     * 建造
     * @author Administrator
     *
     */
    public interface CarBuilderInstance {
        
        Fadongji buildFadongji();
        
        Moju buildMoju();
        
    
    }

    装备者

    /**
     * 装配
     * @author Administrator
     *
     */
    public interface CarDirectorInstance {
        
        Car  directorCar();
    
    }

    建造者的具体实现

    /**
     * 一汽厂商
     * @author Administrator
     *
     */
    public class YiqiBuilder implements CarBuilderInstance {
    
        public Fadongji buildFadongji() {
            System.out.println("一汽发动机");
            return new Fadongji("一汽发动机");
        }
    
        public Moju buildMoju() {
            System.out.println("一汽模具");
            return new Moju("一汽模具");
        }
    
    }

    装配者的具体实现

    /**
     * 一汽装配
     * @author Administrator
     *
     */
    public class YiqiDirector implements CarDirectorInstance{
        
        //需要建造者进行装配
        private CarBuilderInstance builder;
    
        public YiqiDirector(CarBuilderInstance builder) {
            super();
            this.builder = builder;
        }
    
        public Car directorCar() {
            Fadongji fadongji = builder.buildFadongji();
            Moju moju = builder.buildMoju();
            Car car = new Car();
            car.setFadongji(fadongji);
            car.setMoju(moju);
            return car;
        }
    
    }

    测试

    public class Client {
        
        public static void main(String[] args) {
            
            CarDirectorInstance directorInstance = new YiqiDirector(new YiqiBuilder());
            Car car = directorInstance.directorCar();
            car.run();
            
        }
    
    }

    需要现有建造再有装配

    应用例子:StringBuilder中append,  PreparedStatement

  • 相关阅读:
    欢天喜地七仙女——Alpha冲刺(11.30)第六天
    欢天喜地七仙女——Alpha冲刺(11.29)第五天
    欢天喜地七仙女——Alpha冲刺(11.28)第四天
    欢天喜地七仙女——Alpha冲刺(11.27)第三天
    欢天喜地七仙女——Alpha冲刺(11.26)第二次
    欢天喜地七仙女——Alpha冲刺(11.25)第一天
    fist-总结随笔
    fist-第十天随笔
    fist-第九天冲刺随笔
    fist-第八天冲刺随笔
  • 原文地址:https://www.cnblogs.com/jentary/p/5906794.html
Copyright © 2011-2022 走看看