Android设计模式系列(12)--SDK源码之生成器模式(建造者模式)
2016-03-14 17:29
549 查看
建造者模式把构造和表示分离开,根据客户需求生产一个相应的对象。
本来呢,我们根据Builder接口实现不同的具体的ConcreteBuilder,就可生产不同的对象了。
但是,下面例子的只有一个Builder,所以也没有接口Builder,也没有其他的ConcreteBuilder。
但是我今天要讲的例子太简单,简单到都不觉得是建造者模式,但是又有建造者模式的感觉。
意图
将一个复杂对象的构建和它的表示分离,使得同样的创建过程可以创建不同的表示。
2.结构图和代码
android中大量的使用对话框组件,它的调用方法就是构建,拼接,表示。
Builder通过setTitle(),setMessage(),setIcon()等方法在create()中构造出一个AlertDialogInstance对象。
然后客户可以把把AlertDialogInstance对象show出去。
针对这个例子,我有必要通过扩展一下,以正建造者模式之名。
如何扩展?
(1).创建其他的ConcreteBuilder
(2).创建其他的ElseDialog
(3).第1,2步决定了我们最好创建一个抽象的Builder
(4).创建一个Context,把builder注入进去,生产不同的Dialog(或者其他UI)对象。
3.效果
(1).创建型模式
(2).可以生产不同的Dialog,也可以生产其他的UI,生产的Product可以是差别很大的,所以也没必要为Product定义抽象父类。
本来呢,我们根据Builder接口实现不同的具体的ConcreteBuilder,就可生产不同的对象了。
但是,下面例子的只有一个Builder,所以也没有接口Builder,也没有其他的ConcreteBuilder。
但是我今天要讲的例子太简单,简单到都不觉得是建造者模式,但是又有建造者模式的感觉。
意图
将一个复杂对象的构建和它的表示分离,使得同样的创建过程可以创建不同的表示。
2.结构图和代码
android中大量的使用对话框组件,它的调用方法就是构建,拼接,表示。
Builder通过setTitle(),setMessage(),setIcon()等方法在create()中构造出一个AlertDialogInstance对象。
然后客户可以把把AlertDialogInstance对象show出去。
针对这个例子,我有必要通过扩展一下,以正建造者模式之名。
如何扩展?
(1).创建其他的ConcreteBuilder
(2).创建其他的ElseDialog
(3).第1,2步决定了我们最好创建一个抽象的Builder
(4).创建一个Context,把builder注入进去,生产不同的Dialog(或者其他UI)对象。
3.效果
(1).创建型模式
(2).可以生产不同的Dialog,也可以生产其他的UI,生产的Product可以是差别很大的,所以也没必要为Product定义抽象父类。
相关文章推荐
- Android Fresco 图片框架加载图片解决不能warp_content得问题
- 采用MQTT协议实现Android消息推送
- 用Kotlin写响应式编程RxAndroid
- Android系统Intent中的Uri使用
- Android中糟糕的AsyncTask
- Android设计模式系列(11)--SDK源码之策略模式
- android:layout_weight的真实含义
- Android开发者入门必知了解谷歌官方Android开发文档
- Android 之Hierarchy Tool Window
- 在Android系统外部和内部读取Android应用的签名
- Android设计模式系列(10)--SDK源码之原型模式
- android4.4短信拦截怎么实现,abortBroadcast()不能实现啊
- android GridLayout。。。
- Activity的跳转
- android中MeasureSpec的使用
- Android AutoLayout全新的适配方式 堪称适配终结者
- Android设计模式系列(9)--SDK源码之适配器模式
- Android 编程下获得应用程序的签名
- Android设计模式系列(8)--SDK源码之工厂方法模式
- android 拍照 图片剪切