Android中常用的设计模式-建造者模式(Builder Pattern)

移动开发 Android
建造者模式(Builder Pattern)是一种创建型设计模式,也被称为生成器模式。它将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

介绍

建造者模式(Builder Pattern)是一种创建型设计模式,也被称为生成器模式。它将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

优缺点

优点:

  • 封装性好,构建和表示分离。
  • 扩展性好,各个具体的建造者相互独立,有利于系统的解耦。
  • 客户端不必知道产品内部组成的细节,建造者可以对创建过程逐步细化,而不对其它模块产生任何影响,便于控制细节风险。

缺点:

  • 产品的组成部分必须相同,这限制了其使用范围。
  • 如果产品的内部变化复杂,如果产品内部发生变化,则建造者也要同步修改,后期维护成本较大。

结构

  • Builder:为创建一个产品对象的各个部件指定抽象接口。
  • ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并提供一个检索产品的接口。
  • Director:构造一个使用Builder接口的对象。
  • Product:表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程,包含定义组成部件的类,包括将这些部件装配成最终产品的接口。

示例

public class Person {

    private String mPersonName;
    private int mPersonAge;
    private int mSex;
    private String mCardNumber;

    public Person Person(){
        return new Person(new Person.Builder());
    }

    public Person(Person.Builder builder){
        this.mCardNumber = builder.mCardNumber;
        this.mSex = builder.mSex;
        this.mPersonAge = builder.mPersonAge;
        this.mPersonName = builder.mPersonName;
    }

    public static final class Builder {
    
        private String mPersonName;
        private int mPersonAge;
        private int mSex;
        private String mCardNumber;

        public Builder(){}

        public Person build(){
            return new Person(this);
        }

        public Person.Builder setPersonName(String mPersonName) {
            this.mPersonName = mPersonName;
            return this;
        }

        public Person.Builder setPersonAge(int mPersonAge) {
            this.mPersonAge = mPersonAge;
            return this;
        }

        public Person.Builder setSex(int mSex) {
            this.mSex = mSex;
            return this;
        }

        public Person.Builder setCardNumber(String mCardNumber) {
            this.mCardNumber = mCardNumber;
            return this;
        }
    }
}



//使用Buidler构建Person对象
Person person = new Person.Builder()
    .setPersonName("张三")
    .setSex(1)
    .setPersonAge(30)
    .build();

建造者模式通过将复杂对象的构建过程分解为多个简单的构建步骤,然后按照顺序逐步构建,使得构建过程更加清晰和易于管理。同时,由于构建过程和表示被分离,因此可以创建不同的表示,从而提高了系统的灵活性和可扩展性。

在使用建造者模式时,需要仔细考虑产品的组成部分是否相同,以及产品的内部变化是否复杂,以避免在后期维护中产生不必要的麻烦。此外,还需要根据实际情况选择合适的角色和实现方式,以达到最佳的设计效果。

责任编辑:赵宁宁 来源: 沐雨花飞蝶
相关推荐

2020-10-20 13:33:00

建造者模式

2021-10-26 00:21:19

设计模式建造者

2021-01-21 05:34:14

设计模式建造者

2021-04-14 09:02:22

模式 设计建造者

2011-07-14 14:46:46

设计模式

2021-12-01 07:38:27

设计模式规格模式Specificati

2013-11-26 17:09:57

Android设计模式

2021-10-27 17:57:35

设计模式场景

2021-06-10 19:09:05

模式代码建造者

2021-05-11 08:54:59

建造者模式设计

2019-08-16 10:46:46

JavaScript工厂模式抽象工厂模式

2021-11-29 09:38:12

设计模式对象池模式Object Pool

2020-11-05 09:38:07

中介者模式

2024-07-31 10:41:16

C#设计模式

2021-07-28 10:02:54

建造者模式代码

2023-05-26 08:41:23

模式Go设计模式

2012-10-29 11:16:13

2012-08-27 10:52:20

.NET架构观察者模式

2012-08-22 10:10:25

单态单态设计设计模式

2020-12-01 07:16:05

重学设计模式
点赞
收藏

51CTO技术栈公众号