Java 设计模式-建造者模式(Builder)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,就这样先简单理解什么是建造者模式吧,知道在什么情形下能使用这种设计模式,至于深入的理解和拓展,只能在实际项目中去实践了。
以上是笔者对 建造者模式 的一点点理解,记录下来当做笔记使用,如有不正之处,恳请指正出来,共同进步。
源码下载
更多相关文章
- android 通过pull解析xml文件
- Android怎么让toast在屏幕顶部显示
- Android(安卓)高亮指示层提示
- android CursorAdapter
- 一起Talk Android吧(第二百六十六回:Android中的ViewPager二)
- 【Android(安卓)开发】: Android客户端与服务端之间使用GSON交互
- Android百度地图——在地图上标注已知GPS纬度经度值的一个或一组
- Android(安卓)Service简单示例
- Android遍历SqlLite cursor对象: