Android 建造者(Builder)模式
关于 Builder 模式 详述:http://blog.csdn.net/jjwwmlp456/article/details/39890699
先来张图
看到 Android 中 使用了 Builder 模式的地方还是非常多的。
使用时 大概例如以下:
Notification noti = new Notification.Builder(context).build();
AlertDialog dialog = new AlertDialog.Builder(context).create();
在builder()和create()之前 还能够创建多个属性。类似以下的样例
演示样例
/**
* author : stone
* email : aa86799@163.com
* time : 15/7/3 10 26
*/
public class TestBuilder { private int a;
private String b; public int getA() {
return a;
} public String getB() {
return b;
} protected TestBuilder(Builder builder) {
this.a = builder.ma;
this.b = builder.mb;
} public static class Builder {
private int ma;
private String mb; public Builder createA(int a) {
this.ma = a;
return this;
} public Builder showB(String b) {
this.mb = b;
return this;
} public TestBuilder build() {
return new TestBuilder(this);
}
} public static void main(String[] args) {
TestBuilder tb = new TestBuilder.Builder()
.createA(88)
.showB("susan")
.build(); }
}
注:
1. 这里是通过静态内部类Builder来构造零件
2. 每一个零件的构建方法返回该构建者
3. 外部实际对象的构造方法的訪问符 应是 private或protected。使其仅仅能通过内部类来创建
与普通的Java-Bean的对照:
Bean中用setter 或 构造方法中一堆參数, 来给属性赋值
这里。用new Builder().a.b.c...build();
个人感觉。优点就是:
1. 有选择的构建须要的属性,不须要为了使用哪个构造方法而纠结
2. 调用时,赋值一个属性后,编译器马上提示其他可运行的构建属性的方法。书写更方便、高速
Android 建造者(Builder)模式的更多相关文章
- Java设计模式-建造者(Builder)模式
目录 由来 使用 1. 定义抽象 Builder 2. 定义具体 Builder类 3. 定义具体 Director类 4. 测试 定义 文字定义 结构图 优点 举例 @ 最近在看Mybatis的源码 ...
- 建造者(Builder)模式
建造者模式是对象的创建模式.建造模式可以将一个产品的内部表象(internal representation)与产品的生产过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象. 产品的 ...
- 设计模式C++描述----07.建造者(Builder)模式
一. 概述 Builder 模式要解决的问题是:当我们要创建的对象很复杂的时候(通常是由很多其他的对象组合而成),我们要要复杂对象的创建过程和这个对象的表示(展示)分离开 来,这样做的好处就是通过一步 ...
- android中builder模式的使用
变种的Builder模式的自动化生产实现: AS安装插件 Innerbuilde 新建User类 public class User { private final String name; //必 ...
- 设计模式--建造者(Builder)模式
将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示 --<设计模 ...
- Android设计模式——Builder(建造者)模式
1.建造者模式是一步一步创建一个复杂对象的创建模式.该模式是为了将构建复杂对象的过程和他的部件解耦,使得构建过程和部件表示隔离开. 2.Bulider模式的定义是:将一个复杂对象的构建与它的表示分离, ...
- Android Builder模式在开发中的应用
最近在学习图片加载框架Glide的时候,被他精简的写法震惊了.一句话,就可以搞定. Glide.with(mContext) .load(url) .centerCrop() .placeholder ...
- Android设计模式源码解析之Builder模式
https://github.com/simple-android-framework/android_design_patterns_analysis/tree/master/builder/mr. ...
- 《Android源码设计模式》--Builder模式
No1: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 No2: 在Android源码中,最常用到的Builder模式就是AlertDialog.Builder No3: ...
随机推荐
- 《Effective C++》Item2:尽量以const,enum,inline替换#define
1. 宏定义 #define ASPECT_RATIO 1.653 该宏定义ASPECT_RATIO也许从来没有被编译器看到,也许在编译器开始处理源码之前就已经被预处理器替换了.所以记号名称ASPEC ...
- C++学习之嵌套类和局部类
C++学习之嵌套类和局部类 局部类 在一个函数体内定义的类称为局部类. 局部类中只能使用它的外围作用域中的对象和函数进行联系,因为外围作用域中的变量与该局部类的对象无关.在定义局部类时需要注意:局部类 ...
- IT工程师值得一看的书籍
http://blog.csdn.net/chinahuyong/article/details/45060203
- wampserver 绑定域名(wampserver 本地域名测试配置)
一.tomact 配置虚拟主机 1.打开Apache菜单下“httpd.conf”文件: 找到“# Include conf/extra/httpd-vhosts.conf” , 把这句前面的#号去掉 ...
- Data Mining
数据探索: 数据探索有助于选择合适的数据处理与数据分析技术.它甚至可以解决一些数据挖掘问题. 1.汇总统计:量化用单个数或数据的集合展示数据的特性: 如集合的平均值.方差. 2.可视化技术:以图形或表 ...
- 阿里云ECS每天一件事D7:安装tomcat8.0
这一D,跨越了几个月啊,人是越来越懒,集中写一些,就懒得再记录了.也是因为测试需要,搭建个jsp的服务环境,只是测试,考虑用tomcat就够了. 在Tomcat官网下载最新Core版本,下载之后,将文 ...
- ElaticSearch网站
http://www.tuicool.com/articles/r2QJVr http://so.searchtech.pro/articles/2013/06/16/1371392427213.ht ...
- C模块回调Lua函数的两种方法
作者:ani_di 版权所有,转载务必保留此链接 http://blog.csdn.net/ani_di C模块回调Lua函数的两种方法 lua和C通过虚拟栈这种交互方式简单而又可靠,缺点就是C做栈平 ...
- 我的MYSQL学习心得 mysql日志
这一篇<我的MYSQL学习心得(十五)>将会讲解MYSQL的日志 MYSQL里的日志主要分为4类,使用这些日志文件,可以查看MYSQL内部发生的事情. 分别是 1.错误日志:记录mysql ...
- /usr/bin/env: node: no such file or directory
今天在安装gulp的之后,运行gulp命令出现了如下报错: /usr/bin/env: node: no such file or directory 网上找了好久,终于解决了,所以记录一下,便于下次 ...