【设计模式】建造者(生成器)
生成器模式,也叫建造者模式。有人说后者是想强调该模式重点是强调建造过程,而不是生成。
个人比较认同,所以后文也叫建造者模式。
建造者模式,主要意图是将对象的建造于他的表示分离。从而使得同样的建造过程可以建造出不同的产品。
参与者有建造者,导演和具体的产品。
举例说明,我们想生产电脑,电脑就是产品。声明一个类,叫builder,而具体的建造者,需要继承自这个父类,并实现其构造方法,并最终返回构造后的产品。
这里变化的部分就是,不同的建造者和构造过程。建造者可以通过继承出新的类来实现扩展。
而建造过程,通过一个director类来封装。每个过程可以对应一个新的导演。导演负责调用具体建造者对应的建造方法。并最终获取其生产的产品。
pc builder working...PC body built!PC screen built!PC mouse built!PC keybord built!RESULT: A PC With: a Body; a Screen; a Mouse; a Keybord; Ipad builder working...IPad body built!IPad screen built!no mouse!no keybord!RESULT: An Ipad With: a Body; a Screen;
缺点看起来是客户端需要知道有哪些建造者和建造过程。由客户端来选择具体的导演类和建造者。如果客户端不关注这些,那么就不适用了。
跟抽象工厂的区别是,抽象工厂强调多个系列产品兑现搞得构造方式,而建造者强调构造一个复杂对象的过程。