1700459436
1700459437
BenzBuilder benzBuilder=new BenzBuilder();
1700459438
1700459439
//把顺序给这个builder类,制造出这样一个车出来
1700459440
1700459441
benzBuilder.setSequence(sequence);
1700459442
1700459443
//制造出一个奔驰车
1700459444
1700459445
BenzModel benz=(BenzModel)benzBuilder.getCarModel();
1700459446
1700459447
//奔驰车跑一下看看
1700459448
1700459449
benz.run();
1700459450
1700459451
//按照同样的顺序,我再要一个宝马
1700459452
1700459453
BMWBuilder bmwBuilder=new BMWBuilder();
1700459454
1700459455
bmwBuilder.setSequence(sequence);
1700459456
1700459457
BMWModel bmw=(BMWModel)bmwBuilder.getCarModel();
1700459458
1700459459
bmw.run();
1700459460
1700459461
}
1700459462
1700459463
}
1700459464
1700459465
运行结果如下所示:
1700459466
1700459467
奔驰车的引擎是这个声音的……
1700459468
1700459469
奔驰车跑起来是这个样子的……
1700459470
1700459471
奔驰车应该这样停车……
1700459472
1700459473
宝马车的引擎是这个声音的……
1700459474
1700459475
宝马车跑起来是这个样子的……
1700459476
1700459477
宝马车应该这样停车……
1700459478
1700459479
看,同样运行顺序的宝马车也生产出来了,而且代码是不是比刚开始直接访问产品类(Procuct)简单了很多。我们在做项目时,经常会有一个共识:需求是无底洞,是无理性的,不可能你告诉它不增加需求就不增加,这4个过程(start、stop、alarm、engineBoom)按照排列组合有很多种,XX公司可以随意组合,它要什么顺序的车模我就必须生成什么顺序的车模,客户可是上帝!那我们不可能预知他们要什么顺序的模型呀,怎么办?封装一下,找一个导演,指挥各个事件的先后顺序,然后为每种顺序指定一个代码,你说一种我们立刻就给你生产处理,好方法,厉害!我们先修改一下类图,如图11-3所示。
1700459480
1700459481
1700459482
1700459483
1700459484
图11-3 完整汽车模型类图
1700459485
[
上一页 ]
[ :1.700459436e+09 ]
[
下一页 ]