Android Dialog中的Builder设计模式
2015-09-12 17:42
363 查看
1.Builder设计模式的定义
Builder模式定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。Builder模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们。用户不知道内部的具体构建细节。Builder模式是非常类似抽象工厂模式,细微的区别大概只有在反复使用中才能体会到。
2.使用Builder模式所带来的好处
简单一句话,就是对创建复杂对象的过程和复杂对象的部件进行解耦。这里可以说得有点不太明白,我们就拿现实生活中的实际例子来说明一下。比如电脑的零部件包括:cup,内存条,硬盘,显卡等等,电脑的组装过程也相对复杂,builder模式就是将这些零部件与电脑的组装过程分离开。也许这些还是不够明白,说得更加直白一点就是,我们组装电脑的时候只关注把电脑的零部件组装成成品就行了,至于电脑的cpu,内存条等零部件是怎么生产出来的,这些我们不必关注了,这些对外部来说是隐藏的,这样就大大提高了生产效率和简化了复杂度。3.简单使用Builder设计模式
首先需要定义一个接口,该接口中定义如何创建各个部件。public interface Builder { //创建部件A void buildPartA(); //创建部件B void buildPartB(); //创建部件C void buildPartC(); Product getResult(); }
该接口就是创建各个零部件的。
然后,使用Director类来构建复杂对象,实际上就是将其零部件组装成成品的过程。
public class Director { private Builder builder; public Director( Builder builder ) { this.builder = builder; } public void construct() { builder.buildPartA(); builder.buildPartB(); builder.buildPartC(); } }
接下来就应该有Builder接口的具体实现类:
public class ConcreteBuilder implements Builder { Part partA, partB, partC; public void buildPartA() { //这里是具体如何构建partA的代码 }; public void buildPartB() { //这里是具体如何构建partB的代码 }; public void buildPartC() { //这里是具体如何构建partB的代码 }; public Product getResult() { //返回最后组装成品结果 }; }
最后,就是如何使用builder模式了
ConcreteBuilder builder = new ConcreteBuilder(); Director director = new Director( builder ); director.construct(); Product product = builder.getResult();
4.Android AlertDialog中Builder的使用
在android中,最常用到的Builder模式那就是AlertDialog.Builder了,下面来看看简单看一个简单的例子。//显示基本的AlertDialog private void showDialog(Context context) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setIcon(R.drawable.icon); builder.setTitle("Title"); builder.setMessage("Message"); builder.setPositiveButton("Button1", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { setTitle("点击了对话框上的Button1"); } }); builder.setNeutralButton("Button2", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { setTitle("点击了对话框上的Button2"); } }); builder.setNegativeButton("Button3", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { setTitle("点击了对话框上的Button3"); } }); builder.create().show(); // 构建AlertDialog, 并且显示 }这段代码是很熟悉的dialog使用方法。这里就是使用Builder来构建复杂的AlertDialog对象。create()函数就是返回的一个AlertDialog对象。至于在Builder里面干了些什么事,即零部件是怎么创建的,我将在下一篇文章中进行讲解。
相关文章推荐
- POJ - 1986 Distance Queries(LCA离线)
- Codeforces Round #316 Tree Requests
- easyui的datagrid为何无法显示json数据
- UI 自定义视图
- iOS开发-------简单通讯录2(UISearchController)
- [Wed, 19 Aug 2015 ~ Tue, 25 Aug 2015] Deep Learning in arxiv
- 关于UIScrollView的几点总结
- Storm UI参数详解
- UIViewContentMode
- IOS开发之手势——UIGestureRecognizer 共存
- Volley框架解析(二)-----Volley及RequestQueue解析
- Android 4.4 Kitkat Phone工作流程浅析(二)__UI结构分析
- HDU 1503 Advanced Fruits(LCS+输出路径)
- IOS UILabel 设置圆角
- POJ 2533 Longest Ordered Subsequence(DP最长上升子序列O(n^2)&&O(nlogn))
- iOS UItableview加载图片的时候的优化之lazy(懒加载)模式and异步加载模式
- NGUI相关----UITexture图片边缘流光效果
- 多个大小不同的UILabel底部对齐的方法
- iphone中UINavigationBar(导航条视图)的介绍
- iOS学习之KVC中setValuesForKeysWithDictionary: