1700459796
1700459797
BenzBuilder和BMWBuilder是相互独立的,对系统的扩展非常有利。
1700459798
1700459799
❑便于控制细节风险
1700459800
1700459801
由于具体的建造者是独立的,因此可以对建造过程逐步细化,而不对其他的模块产生任何影响。
1700459802
1700459803
1700459804
1700459805
1700459806
设计模式之禅 11.3.2 建造者模式的使用场景
1700459807
1700459808
❑相同的方法,不同的执行顺序,产生不同的事件结果时,可以采用建造者模式。
1700459809
1700459810
❑多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时,则可以使用该模式。
1700459811
1700459812
❑产品类非常复杂,或者产品类中的调用顺序不同产生了不同的效能,这个时候使用建造者模式非常合适。
1700459813
1700459814
❑在对象创建过程中会使用到系统中的一些其他对象,这些对象在产品对象的创建过程中不易得到时,也可以采用建造者模式封装该对象的创建过程。该种场景只能是一个补偿方法,因为一个对象不容易获得,而在设计阶段竟然没有发觉,而要通过创建者模式柔化创建过程,本身已经违反设计的最初目标。
1700459815
1700459816
1700459817
1700459818
1700459819
设计模式之禅 11.3.3 建造者模式的注意事项
1700459820
1700459821
建造者模式关注的是零件类型和装配工艺(顺序),这是它与工厂方法模式最大不同的地方,虽然同为创建类模式,但是注重点不同。
1700459822
1700459823
1700459824
1700459825
1700459827
设计模式之禅 11.4 建造者模式的扩展
1700459828
1700459829
已经不用扩展了,因为我们在汽车模型制造的例子中已经对建造者模式进行了扩展,引入了模板方法模式。可能大家会比较疑惑,为什么在其他介绍设计模式的书籍上创建者模式并不是这样说的?读者请注意,建造者模式中还有一个角色没有说明,就是零件,建造者怎么去建造一个对象?是零件的组装,组装顺序不同对象效能也不同,这才是建造者模式要表达的核心意义,而怎么才能更好地达到这种效果呢?引入模板方法模式是一个非常简单而有效的办法。
1700459830
1700459831
大家看到这里估计就开始犯嘀咕了,这个建造者模式和工厂模式非常相似呀,是的,非常相似,但是记住一点你就可以游刃有余地使用了:建造者模式最主要的功能是基本方法的调用顺序安排,也就是这些基本方法已经实现了,通俗地说就是零件的装配,顺序不同产生的对象也不同;而工厂方法则重点是创建,创建零件是它的主要职责,组装顺序则不是它关心的。
1700459832
1700459833
1700459834
1700459835
1700459837
设计模式之禅 11.5 最佳实践
1700459838
1700459839
再次说明,在使用建造者模式的时候考虑一下模板方法模式,别孤立地思考一个模式,僵化地套用一个模式会让你受害无穷!
1700459840
1700459841
如果你已经看懂本书举的例子,并认可这种建造者模式,那你就放心使用,比单独使用建造者是高效、简洁得多。
1700459842
1700459843
1700459844
1700459845
[
上一页 ]
[ :1.700459796e+09 ]
[
下一页 ]