浅学设计模式之建造者(Buildler Pattern)模式及在android中的应用
被自己用一根香蕉收买后,舒舒服服的洗完澡以后,认认真真的做完50多个仰卧起坐以后,在得到自己想要的消息后,好吧,不管是无意或者有意。好吧,现在就将近12点了,关于建造者模式,是今天自己再看刘伟老师的设计模式PPT的时候学习的,在《Head First 设计模式》那本书里是没有讲这个建造者模式,好吧,再一次说明,关于设计模式系列文章的文字部分大部分是从网上整理而来,代码部分由自己完成,因为自我感觉还没有能力能够系统的解释一个模式,已经有现成的比较完善的说明,就不重复造轮子了。
一、概述:在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法确相对稳定。如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统中的 “稳定构建算法”不随着需求改变而改变?这就是要说的建造者模式。

使用建造者模式可以使客户端不必知道产品内部组成的细节,如例子中我们就不需要关心每一个具体的模型内部是如何实现的,产生的对象类型就是CarModel。
Builder之间是相互独立的,与其它的Builder无关,对系统的扩展非常有利。
模式所建造的最终产品更易于控制:由于具体的建造者是独立的,因此可以对建造过程逐步细化,而不对其他的模块产生任何影响。
2. 建造者模式的使用场景建造者模式关注的是的零件类型和装配工艺(顺序),这是它与工厂方法模式最大不同的地方,虽然同为创建类模式,但是注重点不同。
六、和其他模式的区别: Builder 模式和 AbstractFactory 模式在功能上很相似,因为都是用来创建大的复杂的对象,它们的区别是:Builder 模式强调的是一步步创建对象,并通过相同的创建过程可以获得不同的结果对象,一般来说 Builder 模式中对象不是直接返回的。而在 AbstractFactory 模式中对象是直接返回的,AbstractFactory模式强调的是为创建多个相互依赖的对象提供一个同一的接口。建造者模式最主要功能是基本方法的调用顺序安排,也就是这些基本方法已经实现了,通俗的说就是零件的装配,顺序不同产生的对象也不同;而工厂方法则重点是创建,创建零件时它的主要职责,你要什么对象我创造一个对象出来,组装顺序则不是他关心的。有点像AbstractFactory是零件生成厂,而Builder是零件组装厂。 Dialog:Dialog的建造过程就是一个典型的“建造者模式”,通过Builder来设置不同的参数,创建出不同的Dialog。好吧,下一篇文章分析Dialog和Builder的源码。