设计模式五:构建者模式(Builder Pattern)

相关文章:

Android的设计模式-建造者模式

一、Java的构建者(Builder)模式详解

1、概念

建造者模式是一种较为复杂的创建型模式,它将客户端与包含多个组成部分(或部件)的复杂对象的创建过程分离。

2、使用场景

当构造一个对象需要很多参数的时候,并且参数的个数或者类型不固定的时候。

例如:AlertDialog、Glide、Okhttp、Retrofit

3、UML结构图

4、实际代码分析

/**
 * Builder(抽象建造者):创建产品的抽象接口,一般至少有一个创建产品的抽象方法和一个返回产品的抽象方法。
 * 引入抽象类,是为了更容易扩展。
 */
abstract class Builder {
    //创建产品对象
    protected Product product = new Product();

    public abstract void buildPartA();

    public abstract void buildPartB();

    public abstract void buildPartC();

    //返回产品对象
    public Product getResult() {
        return product;
    }
    
}

/**
 * Product(产品类):要创建的复杂对象。在本类图中,产品类是一个具体的类,而非抽象类。实际编程中,
 * 产品类可以是由一个抽象类与它的不同实现组成,也可以是由多个抽象类与他们的实现组成。
 */
public class Product {

    //定义部件,可以是任何类型,包括值类型和引用类型
    private String partA;
    private String partB;
    private String partC;

    public String getPartA() {
        return partA;
    }

    public void setPartA(String partA) {
        this.partA = partA;
    }

    public String getPartB() {
        return partB;
    }

    public void setPartB(String partB) {
        this.partB = partB;
    }

    public String getPartC() {
        return partC;
    }

    public void setPartC(String partC) {
        this.partC = partC;
    }

}

/**
 * ConcreteBuilder(实际的建造者):继承Builder类,实现抽象类的所有抽象方法。实现具体的建造过程和细节。
 */
public class ConcreteBuilder extends Builder {

    @Override
    public void buildPartA() {

    }

    @Override
    public void buildPartB() {

    }

    @Override
    public void buildPartC() {

    }

}

/**
 * Director(指挥者类):分配不同的建造者来创建产品,统一组装流程。
 */
public class Director {
    private Builder builder;

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

    public void setBuilder(Builder builder) {
        this.builder = builder;
    }

    //产品构建与组装方法
    public Product construct(){
        builder.buildPartA();
        builder.buildPartB();
        builder.buildPartC();
        return builder.getResult();
    }

}

public class BuilderClient {
    public static void main(String[] args) {
        //可通过配置文件实现
        Builder builder = new ConcreteBuilder();
        Director director = new Director(builder);
        Product product = director.construct();
    }
}

5、Builder模式优点

a、松散耦合:构建者模式可以用同一个构建算法构建出表现上完全不同的产品,
实现产品构建和产品表现上的分离

b、可以很容易的改变产品的内部表示

c、更好的复用性:构建者模式可以很好的实现构建算法和具体产品实现的分离

6、Builder模式缺点

a、会产生多余的Builder对象以及Director对象,消耗内存

b、对象的构建过程暴露

二、构建者(Builder)模式在Android中的实际使用

1、AlertDialog

2、Glide/Okhttp

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
设计模式是一种在软件设计中常用的解决问题的方法论,其中类设计模式设计模式中的一类,主要关注类与对象之间的组织和交互方式。以下是一些常见的类设计模式: 1. 单例模式(Singleton Pattern):确保一个类只有一个实例,并提供全局访问点。 2. 工厂模式(Factory Pattern):通过工厂类创建对象,隐藏对象的具体实现细节。 3. 抽象工厂模式(Abstract Factory Pattern):提供一个接口,用于创建相关或依赖对象的家族,而不需要指定具体的类。 4. 建造者模式Builder Pattern):将一个复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。 5. 原型模式(Prototype Pattern):通过复制现有对象来创建新对象,避免了使用new关键字创建对象。 6. 适配器模式(Adapter Pattern):将一个类的接口转换成客户端所期望的另一个接口,使得原本不兼容的类可以一起工作。 7. 装饰器模式(Decorator Pattern):动态地给一个对象添加额外的职责,同时又不改变其结构。 8. 代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问。 9. 观察者模式(Observer Pattern):定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都会得到通知并自动更新。 10. 策略模式(Strategy Pattern):定义了一系列算法,并将每个算法封装起来,使它们可以互相替换,使得算法可以独立于使用它的客户端而变化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值