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

介绍

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

优缺点

优点:

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

缺点:

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

结构

  1. Builder:为创建一个产品对象的各个部件指定抽象接口
  2. ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并提供一个检索产品的接口。
  3. Director:构造一个使用Builder接口的对象。
  4. 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();

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

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


原文始发于微信公众号(沐雨花飞蝶):Android中常用的设计模式-建造者模式(Builder Pattern)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/256028.html

(0)
李, 若俞的头像李, 若俞

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!