Android设计模式之建造者模式——AlertDialog
来源:互联网 发布:bilibili mac版下载 编辑:程序博客网 时间:2024/06/07 03:35
建造者模式:将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式(引自百度百科)。
在建造者设计模式中,有以下几个角色:
1 builder:为创建一个产品对象的各个部件指定抽象接口。
2 ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并 提供一个检索产品的接口。
3 Director:构造一个使用Builder接口的对象。
4 Product:表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程,包含定义组成部件的类,包括将这些部件装配成最终产品的接口。
面向接口编程方便后期扩展,使用灵活,降低耦合等,那么看了这些概念后不妨看下Android中涉及到该模式的案例。
例如:AlertDialog(Android确认对话框),熟悉该对话框的应该都知道构建的步骤清晰明朗,流式的构造方式则体现的更better些。这也预兆着为什么响应式编程会越来越流行(RxJava)。
看一下AlertDialog的构造代码:
new AlertDialog.Builder(this) .setTitle("提示框标题") .setMessage("提示信息") .setCancelable(false) .setPositiveButton("确定",(dialog, which)->{ AlarmDialogActivity.this.finish(); }) .setNegativeButton("取消",(dialog, which)->{ AlarmDialogActivity.this.finish(); }) .show();
AlertDialog采用Builder进行构造参数的配置,最后通过show()方法返回一个已配置的AlertDialog实例。
注:上述构造代码中采用了Lambda(兰布达)表达式:(dialog, which) -> {}
Build是AlertDialog的内部类,Build中有所有参数配置的方法,例如:
public Builder setTitle(CharSequence title) { P.mTitle = title; return this; }这些方法的操作是将配置参数用成员P变量保存起来。Build中队P声明如下:
private final AlertController.AlertParams P
下面看一下show()方法:
public AlertDialog create() { final AlertDialog dialog = new AlertDialog(P.mContext, mTheme, false); P.apply(dialog.mAlert); dialog.setCancelable(P.mCancelable); if (P.mCancelable) { dialog.setCanceledOnTouchOutside(true); } dialog.setOnCancelListener(P.mOnCancelListener); dialog.setOnDismissListener(P.mOnDismissListener); if (P.mOnKeyListener != null) { dialog.setOnKeyListener(P.mOnKeyListener); } return dialog; } /** * Creates a {@link AlertDialog} with the arguments supplied to this builder and * {@link Dialog#show()}'s the dialog. */ public AlertDialog show() { AlertDialog dialog = create(); dialog.show(); return dialog; }
由上可见,show方法是返回一个AlertDialog实例,那之前配置的参数呢?细心点你会发现这行代码:
AlertDialog dialog = create();
show方法调用了create方法,而create方法进行了参数的配置并返回了AlertDialog实例。这样一个简单的构造者模式就完成了。
0 0
- Android设计模式之建造者模式——AlertDialog
- 设计模式之----建造者模式(AlertDialog源码分析)
- 设计模式:Android AlertDialog的builder(建造者模式)
- android设计模式之建造者模式
- Android设计模式之建造者模式
- Android进阶系列之源码分析AlertDialog建造者模式
- Java建造者模式,Android建造者模式的AlertDialog
- 设计模式之——建造模式
- 设计模式--[4]建造者模式和AlertDialog源码解析
- 学习设计模式之禅——建造者模式
- 《设计模式之禅》——建造者模式
- 设计模式之(四)——建造者模式
- 设计模式之禅——建造者模式
- Java设计模式之——建造者模式
- 23种设计模式之——建造者模式
- 建造者模式——设计模式之创建型
- 设计模式之—建造者模式(Builder)-Java实现
- android设计模式——建造者模式
- 个人网址导航
- 关于uc/os-ii在c51上的移植总结
- /proc/sysrq-trigger文件
- asp.net学习之Repeater控件
- virtualbox 启动时Kernel driver not installed (rc=-1908) 错误的解决方法
- Android设计模式之建造者模式——AlertDialog
- 嵌入式开发中添加支持harfbuzz-ng所支持的设备
- Markdown中使用LaTeX
- ostu阈值分割
- Spring源码解析——如何阅读源码
- 北航复试上机14真题
- Spark Checkpoint写操作代码分析
- 流程引擎模型总结
- program/code optimization