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();
        }
    }
    //此处的导演类起到了封装左右,可以避免高层模块深入到建造者内部的实现类,
    //而且导演类可以有多个,根据业务逻辑分别用来建造不同的产品并输出。
  • 相关阅读:
    错题集-index.html
    面向对象-原型
    jQuery案例
    jQuery报错
    关于《哈利波特》书的购买方案
    《大道至简》读后感
    网络助手之NABCD
    返回一个二维整数数组中最大联通子数组的和
    返回一个二维整数数组中最大子数组的和。
    返回一个整数数组中最大子数组的和(环)(已更正)
  • 原文地址:https://www.cnblogs.com/slothccc/p/7576590.html
Copyright © 2011-2022 走看看