刘备要到江东娶老婆了,走之前诸葛亮给赵云(伴郎)三个锦囊妙计,说是按天机拆开解决棘手问题,
嘿,还别说,真是解决了大问题,搞到最后是周瑜陪了夫人又折兵呀,那咱们先看看这个场景是什么样子
的。
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 {
@Override
public void operate() {
System.out.println("锦囊一:到达东吴,先去拜会乔国老.");
}
}
package strategy;
/**
* 第二个锦囊
*
* @author 1
* @version 1.0
* @description: 第二个锦囊
* @date 2023/8/9 17:04
*/
public class SecondMethod implements IStrategy {
@Override
public 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 {
@Override
public 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();
// }
}
执行结果