打字猴:1.700476454e+09
1700476454 public static SuperMan getChildSuperMan(){
1700476455
1700476456 return childBuilder.getSuperMan();
1700476457
1700476458 }
1700476459
1700476460 }
1700476461
1700476462 这很简单,不多说了!看看场景类是如何调用的,如代码清单30-11所示。
1700476463
1700476464 代码清单30-11 场景类
1700476465
1700476466 public class Client{
1700476467
1700476468 public static void main(String[]args){
1700476469
1700476470 //建造一个成年超人
1700476471
1700476472 SuperMan adultSuperMan=Director.getAdultSuperMan();
1700476473
1700476474 //展示一下超人的信息
1700476475
1700476476 adultSuperMan.getSpecialTalent();
1700476477
1700476478 }
1700476479
1700476480 }
1700476481
1700476482 这个场景类的写法与工厂方法模式是相同的,但是你可以看到,在建立超人的过程中,建造者必须关注超人的各个部件,而工厂方法模式则只关注超人的整体,这就是两者的区别。
1700476483
1700476484
1700476485
1700476486
1700476487 设计模式之禅 30.1.3 最佳实践
1700476488
1700476489 工厂方法模式和建造者模式都属于对象创建类模式,都用来创建类的对象。但它们之间的区别还是比较明显的:
1700476490
1700476491 ❑意图不同
1700476492
1700476493 在工厂方法模式里,我们关注的是一个产品整体,如超人整体,无须关心产品的各部分是如何创建出来的;但在建造者模式中,一个具体产品的产生是依赖各个部件的产生以及装配顺序,它关注的是“由零件一步一步地组装出产品对象”。简单地说,工厂模式是一个对象创建的粗线条应用,建造者模式则是通过细线条勾勒出一个复杂对象,关注的是产品组成部分的创建过程。
1700476494
1700476495 ❑产品的复杂度不同
1700476496
1700476497 工厂方法模式创建的产品一般都是单一性质产品,如成年超人,都是一个摸样,而建造者模式创建的则是一个复合产品,它由各个部件复合而成,部件不同产品对象当然不同。这不是说工厂方法模式创建的对象简单,而是指它们的粒度大小不同。一般来说,工厂方法模式的对象粒度比较粗,建造者模式的产品对象粒度比较细。
1700476498
1700476499 两者的区别有了,那在具体的应用中,我们该如何选择呢?是用工厂方法模式来创建对象,还是用建造者模式来创建对象,这完全取决于我们在做系统设计时的意图,如果需要详细关注一个产品部件的生产、安装步骤,则选择建造者,否则选择工厂方法模式。
1700476500
1700476501
1700476502
1700476503
[ 上一页 ]  [ :1.700476454e+09 ]  [ 下一页 ]