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

  • 相关阅读:
    初识python 2.x与3.x 区别
    装饰器
    函数的进阶
    Spring Boot启动问题:Cannot determine embedded database driver class for database type NONE
    22.Spring Cloud Config安全保护
    23.Spring Cloud Bus 无法更新问题(踩坑) Spring cloud config server Could not fetch remote for master remote
    24.Spring Cloud之Spring Cloud Config及Spring Cloud Bus
    Spring Boot整合Spring Data Elasticsearch 踩坑
    项目中Spring Security 整合Spring Session实现记住我功能
    32.再谈SpringBoot文件上传
  • 原文地址:https://www.cnblogs.com/jentary/p/5906794.html
Copyright © 2011-2022 走看看