设计模式之建造者模式

  • 设计模式与设计原则,设计模式,建造者模式,
  • 2016-05-17 07:14:59

定义

Separate the construction of a complex object from its representation so that the same construction process can create different representations. 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

四个角色

  • Product 产品类
  • Builder 抽象建造者
  • ConcreteBuilder 具体建造者 : 实现抽象类定义的所有方法,并且返回一个组建好的对象。
  • Director 导演类

建造者模式关注的是零件类型和装配工艺顺序,与工厂方法模式还是有些区别的。

Android 中的建造者模式

AlertDialog.Builder 就是一个符合建造者模式设计的类。AlertDialog 就是建造者模式中的产品类,最终要生成的是一个 Dialog 实例。AlertDialog.Builder 就是建造者,区别是,设计模式中有抽象建筑者和具体建造者两个角色,而这里只有一个 Builder 类,并且我们没有找到导演类。

实际上,我们可以把 AlertDialog.Builder 当成抽象建筑者,也是默认实现的建造者,我们同样可以继承于 AlertDialog.Builder 来实现自定义的一个 Dialog 建造者,这完全是可以的,因为 AlertDialog.Builder 并不是一个 final 的类,在我们自定义的具体建造者中,我们可以根据产品和美术设计的需求,制作出统一风格的 AlertDialog ,对 Dialog 的建造做一层封装。同时我们可以再设计一个导演类,对 Dialog 的建造者再次封装,这样在项目中,咱们就不需要直接操作 AlertDialog 和 Builder 了。当然,这只是我的一个想法,没有实践过,也没有看到哪个项目这样去设计。很多时候,大家都是简单的使用 AlertDialog.Builder 直接构建 Dialog 了。这样虽然比较灵活,但代码量比较大,不美观而且不利于维护,导致了dailog 的风格根本不统一,这个在一些即使是大公司出品的应用中也能看到。

23种设计模式: http://www.binkery.com/archives/446.html

相关文章

- EOF -

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动。
转载请注明:文章转载自 Binkery 技术博客 [https://binkery.com]
本文标题: 设计模式之建造者模式
本文地址: https://binkery.com/archives/462.html