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

  • 相关阅读:
    20190905-3 命令行和控制台编程
    作业要求 20181009-9 每周例行报告
    每周例行报告
    单元测试,结对
    四则运算试题生成
    代码规范,结对要求
    规格说明书-吉林市2日游
    功能测试
    每周例行报告2
    get与post请求的区别
  • 原文地址:https://www.cnblogs.com/jentary/p/5906794.html
Copyright © 2011-2022 走看看