打字猴:1.70045925e+09
1700459250 两个产品的实现类都完成,我们来模拟一下XX公司的要求:生产一个奔驰模型,要求跑的时候,先发动引擎,然后再挂挡启动,然后停下来,不需要喇叭。这个需求很容易满足,我们增加一个场景类实现该需求,如代码清单11-4所示。
1700459251
1700459252 代码清单11-4 宝马模型代码
1700459253
1700459254 public class Client{
1700459255
1700459256 public static void main(String[]args){
1700459257
1700459258 /*
1700459259
1700459260 *客户告诉XX公司,我要这样一个模型,然后XX公司就告诉我老大
1700459261
1700459262 *说要这样一个模型,这样一个顺序,然后我就来制造
1700459263
1700459264 */
1700459265
1700459266 BenzModel benz=new BenzModel();
1700459267
1700459268 //存放run的顺序
1700459269
1700459270 ArrayList<String>sequence=new ArrayList<String>();
1700459271
1700459272 sequence.add(“engine boom”);//客户要求,run的时候时候先发动引擎
1700459273
1700459274 sequence.add(“start”);//启动起来
1700459275
1700459276 sequence.add(“stop”);//开了一段就停下来
1700459277
1700459278 //我们把这个顺序赋予奔驰车
1700459279
1700459280 benz.setSequence(sequence);
1700459281
1700459282 benz.run();
1700459283
1700459284 }
1700459285
1700459286 }
1700459287
1700459288 运行结果如下所示:
1700459289
1700459290 奔驰车的引擎是这个声音的……
1700459291
1700459292 奔驰车跑起来是这个样子的……
1700459293
1700459294 奔驰车应该这样停车……
1700459295
1700459296 看,我们组装了这样的一辆汽车,满足了XX公司的需求。但是想想我们的需求,汽车的动作执行顺序是要能够随意调整的。我们只满足了一个需求,还要下一个需求呀,然后是第二个宝马模型,只要启动、停止,其他的什么都不要;第三个模型,先喇叭,然后启动,然后停止;第四个……直到把你逼疯为止,那怎么办?我们就一个一个地来写场景类满足吗?不可能了,那我们要想办法来解决这个问题,有了!我们为每种模型产品模型定义一个建造者,你要啥顺序直接告诉建造者,由建造者来建造,于是乎我们就有了如图11-2所示的类图。
1700459297
1700459298
1700459299
[ 上一页 ]  [ :1.70045925e+09 ]  [ 下一页 ]