创建型模式-建造者模式理解

1.前言:

首先建造者模式适合下面的场景,进行使用:

假设不同的对象有着基本的共同特点、或者配合前端进行页面布局,进行构建一个复杂的对象;

那么可以参考工厂方法模式进行抽取对象,并进行解耦,达到一个设计符合要求的对象的过程;

eg:1

保险产品,前端页面,所有的、或者说某种类型的保险产品,页面逻辑或者说是布局都是基本一致;

i例如,前端页面布局框架拆分固定的几个模块,以及不同的模块有不同的参数结构进行解析后台参数,不同的产品在整体满足要求情况下,不同页面模块上面有着不同的效果,也可以用建造者模式完成构建这个整体对象

eg:2

l例如游戏,简单点,不同的游戏任务,有着基本的公共模块,头部、手臂、腿部、身体等,不同的游戏人物,,满足整体要求的情况下,不同的部分展示不同的效果,这时候也可以使用建造者模式,完成构建这个整体对象的目标,

。。。等等

简单点就是,建造者模式构建对象,适用于,满足一定公共特征、或者特点,只是细微之处不同时,可以使用这个模块进行构建一个复杂的对象。

2.建造者模式模块详解

在建造者模式结构图中包含如下几个角色

● Builder(抽象建造者):它为创建一个产品Product对象的各个部件指定抽象接口,在该接口中一般声明两类方法,一类方法是buildPartX(),它们用于创建复杂对象的各个部件;另一类方法是getResult(),它们用于返回复杂对象。Builder既可以是抽象类,也可以是接口。

●ConcreteBuilder(具体建造者):它实现了Builder接口,实现各个部件的具体构造和装配方法,定义并明确它所创建的复杂对象,也可以提供一个方法返回创建好的复杂产品对象。

●Product(产品角色):它是被构建的复杂对象,包含多个组成部件,具体建造者创建该产品的内部表示并定义它的装配过程。

● Director(指挥者):指挥者又称为导演类,它负责安排复杂对象的建造次序,指挥者与抽象建造者之间存在关联关系,可以在其construct()建造方法中调用建造者对象的部件构造与装配方法,完成复杂对象的建造。客户端一般只需要与指挥者进行交互,在客户端确定具体建造者的类型,并实例化具体建造者对象(也可以通过配置文件和反射机制),然后通过指挥者类的构造函数或者Setter方法将该对象传入指挥者类中。
 

3.demo设计


/**
 * 复杂产品对象类
 */
@Data
class Product {
    /**
     * 类型
     */
    private  String type;
    /**
     * 参考指标
     */
    private  String index;

    //等等

}

/**
 * 产品构建抽象类:抽象建造者
 */
abstract class ProductBuilder {

    protected  Product product = new Product();

    public  abstract void buildType();
    public  abstract void buildIndex();

    //工厂方法,返回一个完整的游戏角色对象

    public product createProduct() {
        return product;
    }
}

/**
 * 产品1生成实现类:具体建造者
 */
class Pro1Builder extends ProductBuilder {

    public  void buildType() {
        product.setType("产品类型1");
    }

    public  void buildIndex() {
        product.setIndex("沪深指标1");
    }

}

/**
 * 指挥者:具体service构建对象调用
 */
class Producter1Control implements  XXX某某业务api {
    
    public void business() {
        Pro1Builder pro1Builder = new Pro1Builder();
        pro1Builder.buildType();
        pro1Builder.buildIndex();
        //此处已完成初步构建,大致思路如此展示

    }

}

猜你喜欢

转载自blog.csdn.net/qq_44691484/article/details/130874977
今日推荐