刘备要到江东娶老婆了,走之前诸葛亮给赵云(伴郎)三个锦囊妙计,说是按天机拆开解决棘手问题,
嘿,还别说,真是解决了大问题,搞到最后是周瑜陪了夫人又折兵呀,那咱们先看看这个场景是什么样子
的。
1
先说这个场景中的要素:
- 三个妙计
- 一个锦囊
- 一个赵云
妙计是小亮同志给的,妙计是放置在锦囊
里,俗称就是锦囊妙计嘛,那赵云就是一个干活的人,从锦囊中取出妙计,执行,然后获胜,用 JAVA 程序
怎么表现这个呢?我们先看类图:
代码实现
(1)编写3个妙计
定义妙计策略接口
package strategy;/*** 策略接口:妙计** 锦囊一:到达东吴,先去拜会乔国老;锦囊二:刘备贪念美色不思离开,就对他谎称曹操大军压境;锦囊三:如果被东吴军队追赶,求孙夫人解围。** @author 1*/
public interface IStrategy {/*** 锦囊妙计*/public void operate();
}
package strategy;/*** 第一个锦囊** @author 1* @version 1.0* @description: TODO* @date 2023/8/9 17:02*/
public class FirstMethod implements IStrategy {@Overridepublic void operate() {System.out.println("锦囊一:到达东吴,先去拜会乔国老.");}
}
package strategy;/*** 第二个锦囊** @author 1* @version 1.0* @description: 第二个锦囊* @date 2023/8/9 17:04*/
public class SecondMethod implements IStrategy {@Overridepublic void operate() {System.out.println("锦囊二:刘备贪念美色不思离开,就对他谎称曹操大军压境.");}
}
package strategy;/*** @author 1* @version 1.0* @description: TODO* @date 2023/8/9 17:07*/
public class ThirdMethod implements IStrategy {@Overridepublic void operate() {System.out.println("锦囊三:如果被东吴军队追赶,求孙夫人解围.");}
}
(2)编写锦囊
package strategy;/*** 锦囊** @author 1* @version 1.0* @description: TODO* @date 2023/8/9 17:08*/
public class Context {private IStrategy strategy;public Context(IStrategy strategy) {this.strategy = strategy;}/*** 使用锦囊*/public void operate() {this.strategy.operate();}
}
(3)编写赵云(使用锦囊的人)有兴趣可以看两种调用方法,没兴趣看第一个就行
package strategy;/*** @author 1* @version 1.0* @description: TODO* @date 2023/8/9 16:59*/
public class ZhaoYun {/***方法一:* @param args*/public static void main(String[] args) {Context context;//1.赵云到吴国拿出第一个锦囊context = new Context(new FirstMethod());context.operate();//2.刘备不想走,拿出第二个锦囊context = new Context(new SecondMethod());context.operate();//3.孙权有追兵,拿出第三个锦囊context = new Context(new ThirdMethod());context.operate();}/**方法二:条件封装,因为需要new的三个妙计提前是知道的,可以封装到map中,依次调用* @param args*/
// public static void main(String[] args) {
// Map<Integer, IStrategy> map = new HashMap<Integer, IStrategy>() {{
// put(1, new FirstMethod());
// put(2, new SecondMethod());
// put(3, new ThirdMethod());
// }};
//
// Context context;
// //1.赵云到吴国拿出第一个锦囊
// context = new Context(map.get(1));
// context.operate();
// //2.刘备不想走,拿出第二个锦囊
// context = new Context(map.get(2));
// context.operate();
// //3.孙权有追兵,拿出第三个锦囊
// context = new Context(map.get(3));
// context.operate();
// }}
执行结果