设计模式笔记系列 第三篇

        这篇记录下建造者模式、粉饰器模式、门面模式、观察者模式、代理模式和责任链模式~

1、建造者模式

        (一)、定义

                将一个复杂对象的创建和它的表示分离,使得同样的创建过程可以创建出不同的表示。 通常用于大型复杂对象的创建,并且对于对象的构建有一定的顺序要求。

        (二)、结构

比如我们要创建一个Object对象,我们可以将Object对象的属性按照构建的顺序要求,划分成不同的步骤,封装成一个接口。根据不同的建造顺序,编写不同的实现。然后再写一个Director,来封装对象构建过程,提供一个构建的方法,来输出构建的对象。

        (三)、代码演示
/**
 * @Description: 建造者模式
 */
public interface Builder {
    
    /**
     * @description: 构建第一部分属性接口
     *
     * @param: objectPart1
     * @return: void
     **/
    void buildPart1(String objectPart1);
    
    /**
     * @description: 构建第二部分属性接口
     *
     * @param: objectPart2
     * @return: void
     **/
    void buildPart2(String objectPart2);
    
    /**
     * @description: 构建第三部分属性接口
     *
     * @param: objectPart3
     * @return: void
     **/
    void buildPart3(String objectPart3);

    /**
     * @description: 构建对象
     *
     * @return: BuildObject
     **/
    BuildObject build();
}

/**
 * @Description: 构建对象的实现
 */
public class ObjectBuilder implements Builder {

    private String objectPart1;

    private String objectPart2;

    private String objectPart3;


    @Override
    public void buildPart1(String objectPart1) {
        this.objectPart1 = objectPart1;
    }

    @Override
    public void buildPart2(String objectPart2) {
        this.objectPart2 = objectPart2;
    }

    @Override
    public void buildPart3(String objectPart3) {
        this.objectPart3 = objectPart3;
    }

    @Override
    public BuildObject build() {
        return new BuildObject(this.objectPart1, this.objectPart2, this.objectPart3);
    }
}

/**
 * @Description: 建造者对象
 */
public class BuildObject {

    private String objectPart1;
    private String objectPart2;
    private String objectPart3;

    public BuildObject() {
    }

    public BuildObject(String objectPart1, String objectPart2, String objectPart3) {
        this.objectPart1 = objectPart1;
        this.objectPart2 = objectPart2;
        this.objectPart3 = objectPart3;
    }

    public String getObjectPart1() {
        return objectPart1;
    }

    public void setObjectPart1(String objectPart1) {
        this.objectPart1 = objectPart1;
    }

    public String getObjectPart2() {
        return objectPart2;
    }

    public void setObjectPart2(String objectPart2) {
        this.objectPart2 = objectPart2;
    }

    public String getObjectPart3() {
        return objectPart3;
    }

    public void setObjectPart3(String objectPart3) {
        this.objectPart3 = objectPart3;
    }

    @Override
    public String toString() {
        return "BuildObject{" +
                "objectPart1='" + objectPart1 + '\'' +
                ", objectPart2='" + objectPart2 + '\'' +
                ", objectPart3='" + objectPart3 + '\'' +
                '}';
    }
}

/**
 * @Description: 控制对象的构建
 */
public class Director {
    private Builder builder;

    public Director(Builder builder) {
        this.builder = builder;
    }

    public BuildObject makeObject(String objectPart1, String objectPart2, String objectPart3){
        builder.buildPart1(objectPart1);
        builder.buildPart2(objectPart2);
        builder.buildPart3(objectPart3);
        BuildObject object = builder.build();
        return object;
    }
}

/**
 * @Description: 建造者模式单元测试
 */
public class Builde
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值