zoukankan      html  css  js  c++  java
  • 设计模式------构造者(Builder)模式

      Builder模式是一种广泛使用的设计模式。它的定义是:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示

    一.经典Builder模式

    经典Builder模式主要四个参与者:

    •  抽象建造者(Builder):该角色用于规范产品的各个组成部分,并进行抽象,一般独立于应用程序的逻辑。
    • 具体建造者(Concrete Builder):该角色实现抽象建造者中定义的所有方法,并且返回一个组建好的产品实例。
    • 产品(Product):该角色是建造者中的复杂对象,一个系统中会有多于一个的产品类,这些产品类并不一定有共同的接口,完全可以是不相关联的。
    • 导演者(Director):该角色负责安排已有模块的顺序,然后告诉Builder开始建造。

    下面以代码的形式进行简单说明:

    Product类:

    public class Product {
        private String partOne;
        private String partTwo;
        public String GetPartOne(){
            return partOne;
        }
        public void setPartOne(String partone){
            this.partOne=partone;
        }
        public String GetPartTwo(){
            return partTwo;
        }
        public void setPartTwo(String parttwo){
            this.partTwo=parttwo;
        }
    }

    Builder接口:

    public interface Builder {
        //设置产品的不同部分,以获得不同的产品
        public void buildPartOne();
        public void buildPartTwo();
        //建造产品
        public Product getProduct();
    }

    ConcereteBulder类:

    public class ConcereteBuilder implements Builder {
        private Product product;
        @Override
        public void buildPartOne() {
            //安装部件1
        }
    
        @Override
        public void buildPartTwo() {
            //安装部件2
        }
        //创建产品
        @Override
        public Product getProduct() {
            return product;
        }
    }

    Director()类:

    public class Director {
        private Builder bulder;
        public Director(Builder bulder){
            this.bulder=bulder;
        }
        public void builderProduct(){
            this.bulder.buildPartOne();
            this.bulder.buildPartTwo();
        }
        public Product getProduct(){
            return this.bulder.getProduct();
        }
    }
    //此处的导演类起到了封装左右,可以避免高层模块深入到建造者内部的实现类,
    //而且导演类可以有多个,根据业务逻辑分别用来建造不同的产品并输出。
  • 相关阅读:
    8款超好用的SVG编辑工具用起来
    连接数据后,当执行查询语句报错:ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询
    idea注册码
    chrome 打开本地 pdf 会自动开启下载
    exp/imp 注释乱码问题或Oracle EXP-00091的解决方法
    帆软报表 异常汇总及方案.
    Intellij IDEA的Facets和Artifacts
    Diamond types are not supported at language level '5‘
    IDEA Error:java: Compilation failed: internal java compiler error
    IdentityServer Topics(5)- 使用第三方登录
  • 原文地址:https://www.cnblogs.com/slothccc/p/7576590.html
Copyright © 2011-2022 走看看