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

15 篇文章 0 订阅

前言:

Android 的设计模式系列文章,欢迎star,持续更新。。。

Android 的设计模式---单例模式

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

Android 的设计模式---三种工厂模式

Android 的设计模式---策略模式

Android 的设计模式---责任链模式

Android 的设计模式---观察者模式

定义:

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

介绍:

  • 建造者模式属于创建型模式。
  • 建造模式是将复杂的内部创建封装在内部,对于外部调用的人来说,只需要传入建造者和建造工具,对于内部是如何建造成成品的,调用者无需关心。
  • 比如:一个学校中,我们可以有学生,老师,校长三种人物,但是我不喜欢校长,或者老师,我就想学校就只有学生,或者妹子,这是我们就可以通过建造者模式,只设置一种人物,也一样可以上学,下面请看代码。

 

public class SchoolBuildeMode {
    private String student; //学生
    private String teacher; //老师
    private String principal; //校长
    private String meiZi;//妹子

    public SchoolBuildeMode(String student, String meiZi) {
        this.student = student;
        this.meiZi = meiZi;
    }

    public SchoolBuildeMode(String student, String teacher, String principal) {
        this.student = student;
        this.teacher = teacher;
        this.principal = principal;
    }

    public static class Builder {
        private String student; //学生
        private String teacher; //老师
        private String principal; //校长
        private String meiZi;//妹子

        public Builder setStudent(String student) {
            this.student = student;
            return this;
        }

        public Builder setTeacher(String teacher) {
            this.teacher = teacher;
            return this;
        }

        public Builder setPrincipal(String principal) {
            this.principal = principal;
            return this;
        }

        public Builder setMeiZi(String meiZi) {
            this.meiZi = meiZi;
            return this;
        }

        public SchoolBuildeMode build() {
            return new SchoolBuildeMode(student, teacher, principal);
        }

        public SchoolBuildeMode build2() {
            return new SchoolBuildeMode(student, meiZi);
        }
    }

    /**
     * 这个补充函数是为了表达,我这些变量都用来干些什么事情
     */
    public void doSomething() {
        System.out.println("校长是:" + principal + " 老师是:" + teacher + " 学生是:" + student + " 妹子是: " + meiZi);
    }
}

调用:

 public void main(String [] args){
        //构建一个完整的学校
        new SchoolBuildeMode.Builder().setPrincipal("汪涵").setTeacher("钱枫").setStudent("大张伟").build();
       //构建一个只有我和苍井空的学校(^_^)
        new SchoolBuildeMode.Builder().setPrincipal("我").setMeiZi("苍井空").build2();
    }

使用场景:

  1. 创建一些复杂对象,对象没存存在复杂变化
  2. 相同的构建过程,不同的创建顺序,产生不同的结果
  3. 相同的构建过程,配置不一样

优缺点: 

  1. 封装性良好,隐藏内部构建细节
  2. 具体建造类之间独立,扩展性好
  3. 产生多余的Build对象,消耗了内存
  4. 建造者模式所创建的产品一般具有较多的共同点,其组成部分相似;如果产品之间的差异性很大,则不适合使用建造者模式,因此其使用范围受到一定的限制
  5. 如果产品的内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值