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 ]
[
下一页 ]