public interface Strategy {
public void operation();
}
/**
* 三条妙计
*/
class BackDoor implements Strategy {
@Override
public void operation() {
System.out.println("找乔国老帮忙");
}
}
class GivenGreenLight implements Strategy {
@Override
public void operation() {
System.out.println("求吴国太开个绿灯");
}
}
class BlockEnemy implements Strategy {
@Override
public void operation() {
System.out.println("孙夫人断后");
}
}
/**
* 锦囊盛放妙计
*/
class Context implements Strategy{
private Strategy mStrategy;
public Context(Strategy s){
mStrategy = s;
}
@Override
public void operation() {
mStrategy.operation();
}
}
/**
* 1.策略模式
*/
System.out.println("***********1.策略模式***********");
//生成第一个锦囊
Context context = new Context(new BackDoor());
System.out.println("使用第 1 条妙计:");
context.operation();
//生成第二个锦囊
context = new Context(new GivenGreenLight());
System.out.println("使用第 2 条妙计:");
context.operation();
//生成第三个锦囊
context = new Context(new BlockEnemy());
System.out.println("使用第 3 条妙计:");
context.operation();
System.out.println("");