Java 设计模式-建造者模式(Builder)Android讲解

由于现在从事Android方面的工作,所以觉得结合Android来讲解自己理解的设计模式会贴切一些,那就就继续结合Android来记录一下自己理解的建造者模式

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

个人不喜欢对理论做太多的描述,也可以理解为,这篇博客只是一片入门的博客,因此没有对理论作深入的讲解,快速上手,简单理解,更深的造诣看个人修行了。
对着这些定义,真的不知道该如何描述,好吧,还是从具体使用的例子看看。

Android弹框提示

上图是Android系统常常看见的一种弹框提示,这是最简单的一种,常见的还有,确定取消,按钮等等。

对于弹框提示的安卓代码,就是使用建造者模式(Builder)实现的。

        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMessage("这是一个Android的弹框提示!");
        builder.setTitle("温馨提示");
        // builder.create().show();
        AlertDialog alertDialog = builder.create();
        alertDialog.show();
  • 将一个复杂对象的构建与它的表现分离

提示框 就是一个复杂的对象,可以有确定取消按钮,选项等其他控件, 是一个很复杂的对象,AlertDialog.Builder提示框 的构造器

        builder.setMessage("这是一个Android的弹框提示!");
        builder.setTitle("温馨提示");

使用 builder 构造提示框的提示信息(message)和标题(title)

        AlertDialog alertDialog = builder.create();
        alertDialog.show();

然而提示框的表现 alertDialog.show() 是独立于 builder 的。建造者模式使用 复杂对象 自身去调用自己的表现方式(alertDialog.show())。

  • 使得同样的构建过程可以创建不同的表示

同样使用 builder.setXX(YYY)方式构建对象,根据自身需要构建出不同表现形式的对象,例如提示框,开发者再设置一个按钮,builder.setNegativeButton(text, listener); 将会展现出不同形式的提示框。

OK,上面是对定义的简单解释,接下来通过代码进一步理解

举个例子,假设个人信息是一个很复杂的对象,包括,姓名,身高,年龄,身份信息,等等。。。

很简答直接一个类写完

package cn.design.java.builder;

/**
 * 假设person是一个复杂的对象
 * 
 * @author Ruffian
 * @date 2016年5月12日
 * 
 */
public class Person {

    private String name;
    private int age;
    private String birthday;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getBirthday() {
        return birthday;
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }

    // 复杂对象的表现形式
    public void show() {
        System.out.println("person info = {name:" + name + ",age:" + age
                + ",birthday:" + birthday + "}");
    }

    /**
     * Builder是复杂对象的构造器
     * 
     * @author Ruffian
     * @date 2016年5月12日
     * 
     */
    static class Builder {

        Person person = new Person();

        // 设置将要构造的属性
        public Builder setName(String name) {
            person.setName(name);
            return this;
        }

        public Builder setAge(int age) {
            person.setAge(age);
            return this;
        }

        public Builder setBirthday(String birthday) {
            person.setBirthday(birthday);
            return this;
        }

        // 构造一个复杂对象
        public Person build() {
            return person;
        }

    }

}

在代码中注释一样,假设Person是一个 复杂对象Builder 是复杂对象的构造器。

构造器通过调用 setXX(YYY) 方法,设置将要构造的属性,返回构造器自身,可以继续设置将要构造的属性,然后调用 build()方法,返回一个复杂对象。

复杂对象本身调用 show() 方法展示自己。

看看测试代码

package cn.design.java.builder;

public class Test {

    public static void main(String[] args) {

        // 构造器
        Person.Builder builder = new Person.Builder();
        // 设置属性
        builder.setName("Ruffian").setAge(24).setBirthday("1992-02-19");

        // 构造对象
        Person person = builder.build();
        // 对象展示
        person.show();

    }

}

结果展示

根据自身需求设置属性,假如只设置了年龄跟名字

        Person.Builder builder = new Person.Builder();
        builder.setAge(24);
        builder.setName("Ruffian");

        Person person = builder.build();
        person.show();

结果展示

OK,就这样先简单理解什么是建造者模式吧,知道在什么情形下能使用这种设计模式,至于深入的理解和拓展,只能在实际项目中去实践了。

以上是笔者对 建造者模式 的一点点理解,记录下来当做笔记使用,如有不正之处,恳请指正出来,共同进步。

源码下载

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java设计模式是一组经过实践验证的面向对象设计原则和式,可以帮助开发人员解决常见的软件设计问题。下面是常见的23种设计模式: 1. 创建型式(Creational Patterns): - 工厂方法式(Factory Method Pattern) - 抽象工厂式(Abstract Factory Pattern) - 单例式(Singleton Pattern) - 原型式(Prototype Pattern) - 建造者模式Builder Pattern) 2. 结构型式(Structural Patterns): - 适配器式(Adapter Pattern) - 桥接式(Bridge Pattern) - 组合式(Composite Pattern) - 装饰器式(Decorator Pattern) - 外观式(Facade Pattern) - 享元式(Flyweight Pattern) - 代理式(Proxy Pattern) 3. 行为型式(Behavioral Patterns): - 责任链式(Chain of Responsibility Pattern) - 命令式(Command Pattern) - 解释器式(Interpreter Pattern) - 迭代器式(Iterator Pattern) - 中介者式(Mediator Pattern) - 备忘录式(Memento Pattern) - 观察者式(Observer Pattern) - 状态式(State Pattern) - 策略式(Strategy Pattern) - 板方法式(Template Method Pattern) - 访问者式(Visitor Pattern) 4. 并发型式(Concurrency Patterns): - 保护性暂停式(Guarded Suspension Pattern) - 生产者-消费者式(Producer-Consumer Pattern) - 读写锁式(Read-Write Lock Pattern) - 信号量式(Semaphore Pattern) - 线程池式(Thread Pool Pattern) 这些设计模式可以根据问题的特点和需求来选择使用,它们提供了一些可复用的解决方案,有助于开发高质量、可维护且易于扩展的软件系统。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值