1700465245
设计模式之禅 第18章 策略模式
1700465246
1700465248
18.1 刘备江东娶妻,赵云他容易吗
1700465249
1700465250
在三国演义中,我最佩服诸葛亮的地方不是因为他未出茅庐而有三分天下的预测,也不是他在赤壁鏖战中借东风的法术,更不是他七擒七纵孟获的策略,那是什么呢?是他“气死周瑜,骂死王朗”的气度和风范!想想看,你用“气”能把一个轮胎打爆,用“气”枪能够把路灯打碎,但是要把跟你没有任何血缘关系的人气死有多困难呀,更何况是周瑜这种智慧型人物!
1700465251
1700465252
在诸葛亮气周瑜的过程中,有一件事情:那就是周瑜陪了夫人又折兵这件事情。事情经过是这样的:孙权看刘备有雄起之意,杀是不能杀了,那会惹天下人唾弃,就想个招儿挫他一下,那有什么办法呢?孙权有个妹妹——孙尚香,准备招刘备做女婿,然后孙权想办法把刘备软禁起来,孙权的想法还是很单纯的嘛,就是不让你刘备回西川,然后我东吴想干啥就干啥,夺荆州,吞西川也不是不可能的。东吴的想法是好的,无奈中间多了智谋无敌的诸葛亮,他早就预测了东吴有此招数,于是在刘备去东吴招亲之前,特授以伴郎赵云三个锦囊,说是按天机拆开解决棘手问题。
1700465253
1700465254
这三个妙计分别是:找乔国老帮忙(也就是走后门了),求吴国太放行(诉苦)以及孙夫人断后,对这三个妙计不熟悉的读者可以去温习一下《三国演义》,这里就不多说了。想想看,这三个计谋有什么相似之处,他们都是告诉赵云要怎么执行,也就是说这三个计谋都有一个方法是执行,具体执行什么内容,每个计谋当然不同了,分析到这里,我们是不是就有这样一个设计思路:三个妙计应该实现的是同一个接口?聪明!是的,我们来看类图,如图18-1所示。
1700465255
1700465256
1700465257
1700465258
1700465259
图18-1 三个策略类图
1700465260
1700465261
这是非常简单的类图,在这个场景中的三个主要角色都已经有了,每个妙计都提供了一个可执行的方法,我们先来看接口,如代码清单18-1所示。
1700465262
1700465263
代码清单18-1 妙计接口
1700465264
1700465265
public interface IStrategy{
1700465266
1700465267
//每个锦囊妙计都是一个可执行的算法
1700465268
1700465269
public void operate();
1700465270
1700465271
}
1700465272
1700465273
接口很简单,定义了一个方法operate,每个妙计都是可执行的,否则那叫什么妙计,我们先看第一个妙计——找乔国老开后门,如代码清单18-2所示。
1700465274
1700465275
代码清单18-2 乔国老开后门
1700465276
1700465277
public class BackDoor implements IStrategy{
1700465278
1700465279
public void operate(){
1700465280
1700465281
System.out.println(“找乔国老帮忙,让吴国太给孙权施加压力”);
1700465282
1700465283
}
1700465284
1700465285
}
1700465286
1700465287
第二个妙计是找吴国太哭诉,企图给自己开绿灯,如代码清单18-3所示。
1700465288
1700465289
代码清单18-3 吴国太开绿灯
1700465290
1700465291
public class GivenGreenLight implements IStrategy{
1700465292
1700465293
public void operate(){
[
上一页 ]
[ :1.700465244e+09 ]
[
下一页 ]