Android 设计模式 笔记 - Builder模式
来源:互联网 发布:ubuntu挂载文件 编辑:程序博客网 时间:2024/06/05 22:04
介绍:
通过一步步的执行方法,进行创建复杂对象。可以在不知道类的内部构建方法的时候,更精确创建对象。
定义:
把一个复杂福相的构建和他的定义表示分离,使得同样的构件构成可以创建不同的表示。
模式的角色介绍:
- Product产品类 - 产品抽象类
- Builder - 抽象Builder类,规范商品的创建,子类实现具体的组件过程
- ConcreteBuilder - 具体的Builder类,实现Builder类方法。
- Director - 统一组装过程(可以省略直接使用createBuilder创建)
我们常用的android上面的实现Builder的对象是AlertDialog,现在在Androidstudio上可以很直接的看到AlertDialog的源代码,进行学习、分析。
简单代码:
package com.mabin.gradle.eg.builder;/** * 产品类 * Created by binbin.ma on 2016/7/4. */public abstract class Computer { protected String mBoard ; //主板 protected String mDisplay ; //显示器 protected String mOS ; //系统 protected Computer(){} @Override public String toString() { return "Computer{" + "mBoard='" + mBoard + '\'' + ", mDisplay='" + mDisplay + '\'' + ", mOS='" + mOS + '\'' + '}'; } public void setmBoard(String mBoard) { this.mBoard = mBoard; } public void setmDisplay(String mDisplay) { this.mDisplay = mDisplay; } public abstract void setmOS() ;}
package com.mabin.gradle.eg.builder;/** * 具体产品实现类 * Created by binbin.ma on 2016/7/4. */public class Macbook extends Computer { @Override public void setmOS() { mOS = "Mac OS X 10.10" ; }}
package com.mabin.gradle.eg.builder;/** * 抽象Builder类 * Created by binbin.ma on 2016/7/4. */public abstract class Builder { public abstract Builder buildBoard(String board) ;//设置主板 public abstract Builder buildDisplay(String display) ; //设置显示器 public abstract Builder buildOS();//设置系统 public abstract Computer create();//创建Computer}
package com.mabin.gradle.eg.builder;/** * builder实现类 * Created by binbin.ma on 2016/7/4. */public class MacbookBuilder extends Builder { private Computer computer = new Macbook() ; @Override public Builder buildBoard(String board) { computer.setmBoard(board); return this; } @Override public Builder buildDisplay(String display) { computer.setmDisplay(display); return this; } @Override public Builder buildOS() { computer.setmOS(); return this; } @Override public Computer create() { return computer; }}
package com.mabin.gradle.eg.builder;/** * Diretor统一组装过程 * Created by binbin.ma on 2016/7/4. */public class Director { Builder mBuilder = null ; public Director(Builder builder){ mBuilder = builder ; } public void construct(String board,String display){ mBuilder.buildOS() ; mBuilder.buildBoard(board) ; mBuilder.buildDisplay(display) ; }}
实现方法:
String macbook = new MacbookBuilder().buildBoard("英特尔").buildDisplay("Retina 显示器").buildOS().create().toString();使用上面这种写法的时候Diretor可以省略。
或者:Builder builder = new MacbookBuilder() ; Director pcDirctor = new Director(builder); pcDirctor.construct("英特尔","Retina 显示器"); String macbook2 = builder.create().toString();
0 0
- Android 设计模式 笔记 - Builder模式
- 设计模式笔记-builder 模式
- Android设计模式--Builder模式
- android设计模式-Builder模式
- Android设计模式-Builder模式
- android设计模式:Builder模式
- Android设计模式学习笔记(Builder模式)
- 笔记:Gof设计模式--Builder
- Builder设计模式学习笔记
- builder设计模式学习笔记
- Android设计模式 Builder设计模式
- (6)设计模式笔记[Builder模式]
- 设计模式笔记(二)----Builder模式
- 设计模式学习笔记----Builder模式
- 64.设计模式笔记-Builder模式
- Android设计模式之Builder
- Android设计模式之Builder
- Android中Builder设计模式
- linx x86 汇编
- 百度语音识别
- 大数据量下高并发同步的解决方案
- win10 Edge都上不了网,但是Chrome可以的解决方法
- 【后台开发科普web系列】css
- Android 设计模式 笔记 - Builder模式
- 【腾讯bugly干货分享】HTML 5 视频直播一站式扫盲
- Android系统Recovery工作原理之使用update.zip升级过程分析(八)---解析并执行升级脚本updater-script
- 矩阵快速幂求Fibonacci数列
- Android判断GPS及网络是否开启
- 可折叠列表
- 首页三问题
- (4.2.32.1)android热修复之ClassLoader方式:安卓App热补丁动态修复技术介绍(QQ控件||Nuwa)
- 利用copy命令制作隐藏惊喜