美文网首页
Android 设计模式之建造者模式(Builder Patte

Android 设计模式之建造者模式(Builder Patte

作者: 没有了遇见 | 来源:发表于2022-07-14 09:26 被阅读0次

简介

建造者模式(Builder Pattern)指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式.即创建型模式

意图

拆分构建过程

优缺点

  1. 优点
  • 封装性好,构建和表示分离。
  • 扩展性好,各个具体的建造者相互独立,有利于系统的解耦。

2.缺点

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

建造者(Builder)模式和工厂模式的关注点不同:建造者模式注重零部件的组装过程,而工厂方法模式更注重零部件的创建过程,但两者可以结合使用。

模式的结构与实现

建造者(Builder)模式由产品、抽象建造者、具体建造者、指挥者等 4 个要素构成

案例

public class TestPerson {
    private String mPersonName;
    private int mPersonAge;
    private int mSex;
    private String mCardNumber;

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

    public TestPerson(TestPerson.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 TestPerson build(){
            return new TestPerson(this);
        }

        public TestPerson.Builder addPersonName(String mPersonName) {
            this.mPersonName = mPersonName;
            return this;
        }

        public TestPerson.Builder addPersonAge(int mPersonAge) {
            this.mPersonAge = mPersonAge;
            return this;
        }

        public TestPerson.Builder addSex(int mSex) {
            this.mSex = mSex;
            return this;
        }

        public TestPerson.Builder addCardNumber(String mCardNumber) {
            this.mCardNumber = mCardNumber;
            return this;
        }
    }
}



TestPerson pserson = new TestPerson.Builder()
        .addPersonName("张三")
        .addSex(1)
        .addPersonAge(22)
        .build();

相关文章

网友评论

      本文标题:Android 设计模式之建造者模式(Builder Patte

      本文链接:https://www.haomeiwen.com/subject/liktirtx.html