设计模式之建造者模式(Builder)

2021-11-20  本文已影响0人  ZHG

设计模式中有六大原则和二十三设计模式。
其中六大原则分别为:单一职责原则、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特原则。
二十三设计模式:单例模式、Builder 模式、原型模式、工厂方法模式、抽象工厂模式、策略模式、状态模式、责任链模式、解释器模式、命令模式、观察者模式、备忘录模式、迭代器模式、模版方法模式、访问者模式、中介模式、代理模式、组合模式、适配器模式、装饰模式、享元模式、外观模式、桥接模式。

定义

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

特性

参考(https://blog.csdn.net/qq_23452385/article/details/89285189

使用场景

示例

在Android 中 Builder 模式使用的还是很普遍的,比如Dialog、Retrofit 等都是用了建造者模式。
下面实现一个简单的Builder 模式。

// 产品类
public class Test {
    public String title;
    public String message;

    public void showTitle(){
        System.out.println("Test:: title is "+title);
    }
    public void showMessage(){
        System.out.println("Test:: message is "+message);
    }
}
// 建造者类
public class TestBuilder {
    private Test test;
    public TestBuilder() {
        test = new Test();
    }

    public TestBuilder setTitle(String title){
        test.title = title;
        return this;
    }

    public TestBuilder setMessage(String message){
        test.message = message;
        return this;
    }

    public Test build(){
        System.out.println("TestBuilder:: TITLE is "+test.title+"\n"+"MESSAGE is "+test.message);
        return test;
    }
}
    public static void main(String[] args) {
        // 方式一,显示TestBuilder的结果
        new TestBuilder().setTitle("建造者1").setMessage("BUILDER1").build();

        // 方式二,显示Test 内的方法
        Test test = new TestBuilder().setTitle("建造者2").setMessage("BUILDER2").build();
        test.showTitle();
        test.showMessage();
    }
TestBuilder:: TITLE is 建造者1
MESSAGE is BUILDER1
TestBuilder:: TITLE is 建造者2
MESSAGE is BUILDER2
Test:: title is 建造者2
Test:: message is BUILDER2

总结

Builder 模式可以根据具体的需求,也可以把Builder 放到私有类中,这样更加直观的表现产品的构造。Builder 具有良好的封装性,使用Builder 模式可以让使用者不必知道构成的细节;而且也容易扩展。唯一不好的地方就是它会产生多余的Builder 对象(类爆炸),消耗内存。
DEMO

参考:《Android 源码设计模式解析与实践》

上一篇 下一篇

猜你喜欢

热点阅读