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


    建造者模式:是对象的创建模式。建造模式可以将一个产品的内部表象与产品的生产过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。

    建造模式可以有三种角色:产品、建造器、把建造器组装成产品的对象(导演者)

    下面上代码:

    产品类:

    package build;
    
    /**
     * 产品
     */
    public class Product {
    
        private String part1;
    
        private String part2;
    
        public String getPart1() {
            return part1;
        }
    
        public void setPart1(String part1) {
            this.part1 = part1;
        }
    
        public String getPart2() {
            return part2;
        }
    
        public void setPart2(String part2) {
            this.part2 = part2;
        }
    }
    View Code

    建造器接口:

    package build;
    
    /**
     * 建造器
     */
    public interface Builder {
        void buildPart1();
    
        void builPart2();
    
        Product retrieveResult();
    }
    View Code

    具体实现建造器接口实现类:

    package build;
    
    public class ConcreteBuilder implements Builder {
    
        private Product product = new Product();
        @Override
        public void buildPart1() {
            product.setPart1("构建第一部分");
        }
    
        @Override
        public void builPart2() {
            product.setPart2("构建第二部分");
        }
    
        @Override
        public Product retrieveResult() {
            return product;
        }
    }
    View Code

    导演类:

    package build;
    
    /**
     * 组装建造器的导演者
     */
    public class Director {
        /**
         * 持有当前需要使用的建造器对象
         */
        private Builder builder;
    
        public Director(Builder builder) {
            this.builder = builder;
        }
    
        public void construct(){
            builder.buildPart1();
            builder.builPart2();
        }
    }
    View Code

    Client类:

    package build;
    
    public class Client {
    
        public static void main(String[] args) {
            Builder builder = new ConcreteBuilder();
            Director director = new Director(builder);
            director.construct();
            Product product = builder.retrieveResult();
            System.out.println(product.getPart1());
            System.out.println(product.getPart2());
        }
    }
    View Code
  • 相关阅读:
    单选文本及多行文本溢出问题
    div和textarea内容转换(****)
    URL OR PC/PHONE OR Strlen
    DocumentFragment(创建文档碎片节点)
    ETag
    重绘和回流
    自定义指令
    Angular JS 自定义服务
    jquery ajax 实例
    js 斐波那契序列
  • 原文地址:https://www.cnblogs.com/hujinshui/p/9551048.html
Copyright © 2020-2023  润新知