策略模式
Jihongchang(讨论 | 贡献)2024年7月9日 (二) 12:24的版本
IStrategy.java
public interface IStrategy {
public void operate();
}
BackDoor.java
/**
* 乔国老开后门
*/
public class BackDoor implements IStrategy {
@Override
public void operate() {
System.out.println("找乔国老帮忙,让吴国太给孙权施加压力");
}
}
GivenGreenLight.java
/**
* 吴国太开绿灯
*/
public class GivenGreenLight implements IStrategy {
@Override
public void operate() {
System.out.println("求吴国太开绿灯,放行!");
}
}
BlockEnemy.java
/**
* 孙夫人断后
*/
public class BlockEnemy implements IStrategy {
@Override
public void operate() {
System.out.println("孙夫人断后,挡住追兵");
}
}
Context.java
/**
* 锦囊
*/
public class Context {
private IStrategy strategy;
public Context(IStrategy strategy) {
this.strategy = strategy;
}
public void operate() {
this.strategy.operate();
}
}
ZhaoYun.java
public class ZhaoYun {
/**
* @param args
*/
public static void main(String[] args) {
Context context;
//刚刚到吴国的时候拆一个
System.out.println("---刚刚到吴国的时候拆第一个---");
context = new Context(new BackDoor()); //拿到妙计
context.operate(); //拆开执行
System.out.println("\n\n\n\n\n\n");
System.out.println("---刘备乐不思蜀了,拆第二个了---");
context = new Context(new GivenGreenLight()); //拿到妙计
context.operate(); //执行了第二个锦囊
System.out.println("\n\n\n\n\n\n");
System.out.println("---孙权的小兵追来了,咋办?拆第三个---");
context = new Context(new BlockEnemy());
context.operate();
System.out.println("\n\n\n\n\n");
}
}