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: ...
随机推荐
- table操作:边框-斑马线-多表头-焦点高亮-自动求和
一.操作table,本例子实现的功能: 1.table等宽边框2.table斑马线3.实现table多表头4.焦点所在行高亮5.自动计算总分 二.效果图 三.代码: <!DOCTYPE html ...
- 获取新浪天气api显示天气情况(转)
直接上一个html的demo <!doctype html> <html class="no-js fixed-layout"> <head> ...
- 搭建Ubuntu环境中的Error [dpkg 被中断,您必须手工运行 sudo dpkg --configure -a 解决此问题][安装Flashplayer出错 ]
//解决方法如下: sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock sudo dpkg -r flashplugin-i ...
- XSS CSRF
XSS CSRF XSS 参考 https://zh.wikipedia.org/wiki/%E8%B7%A8%E7%B6%B2%E7%AB%99%E6%8C%87%E4%BB%A4%E7%A2%BC ...
- MYSQL this function has none of deterministic no sql ......错误
This function has none of DETERMINISTIC, NO SQL解决办法 创建存储过程时 出错信息: ERROR 1418 (HY000): This function ...
- issues about Facebook Login
在学习The complete iOS 9 Developer Course - Build 18 Apps 中的Letture134-Facebook Login,需要整合(integrate)Pa ...
- iptables 规则预设置为新centos系统
1,新os iptables预设置脚本
- HDU 1976 prime path
题意:给你2个数n m.从n变成m最少须要改变多少次. 当中: 1.n m 都是4位数 2.每次仅仅能改变n的一个位数(个位.十位.百位.千位),且每次改变后后的新数为素数 思路:搜索的变形题,这 ...
- BZOJ 3916: [Baltic2014]friends( hash )
字符串哈希..然后枚举每一位+各种判断就行了 ----------------------------------------------------------------------------- ...
- BZOJ 3156: 防御准备( dp + 斜率优化 )
dp(i)表示处理完[i,n]且i是放守卫塔的最小费用. dp(i) = min{dp(j) + (j-i)(j-i-1)/2}+costi(i<j≤N) 然后斜率优化 ------------ ...