- 三个妙计
- 一个锦囊
- 一个赵云
代码实现
(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();
// }
}
执行结果文章来源:https://www.toymoban.com/news/detail-643347.html
文章来源地址https://www.toymoban.com/news/detail-643347.html
到了这里,关于策略模式【Strategy Pattern】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!