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();
        }
    }
    //此处的导演类起到了封装左右,可以避免高层模块深入到建造者内部的实现类,
    //而且导演类可以有多个,根据业务逻辑分别用来建造不同的产品并输出。
  • 相关阅读:
    设计模式-工厂设计模式
    Spring Batch BATCH_JOB_SEQ 出现死锁问题
    windows 安装 jenkins 自动化构建部署至linux服务器上
    Git安装
    MAVEN(一) 安装和环境变量配置
    Jenkins 安装
    jenkins操作
    linux firewalld 防火墙操作命令
    【Azure Redis 缓存】Azure Redis读写比较慢/卡的问题排查
    【Azure 服务总线】向服务总线发送消息时,返回错误代码Error code : 50009
  • 原文地址:https://www.cnblogs.com/slothccc/p/7576590.html
Copyright © 2011-2022 走看看