我看懂的设计模式 Strategy策略模式

来源:互联网 发布:知乎长期光头 编辑:程序博客网 时间:2024/06/06 00:48

Strategy,策略模式:定义一系列的算法,把他们一个个封装起来,并使他们可以互相替换,本模式使得算法可以独立于使用它们的客户。

 

 

package com.cbf4life.strategy;
/**
*
*
* 首先定一个策略接口,这是诸葛亮老人家给赵云的三个锦囊妙计的接口
*
*/
public interface IStrategy {
public void operate();
}

 

package com.cbf4life.strategy;
public class BackDoor implements IStrategy {
public void operate() {
System.out.println("找乔国老帮忙,让吴国太给孙权施加压力");
}
}


package com.cbf4life.strategy;
public class GivenGreenLight implements IStrategy {
public void operate() {
System.out.println("求吴国太开个绿灯,放行!");
}
}


package com.cbf4life.strategy;
public class BlockEnemy implements IStrategy {
public void operate() {

System.out.println("孙夫人断后,挡住追兵");
}
}

 

package com.cbf4life.strategy;
public class Context {
private IStrategy straegy;
public Context(IStrategy strategy){
this.straegy = strategy;
}
public void operate(){
this.straegy.operate();
}
}

 

package com.cbf4life.strategy;
public class ZhaoYun {
/**
* 赵云出场了,他根据诸葛亮给他的交代,依次拆开妙计
*/
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\n\n");
System.out.println("-----------刘备乐不思蜀了,拆第二个了-------------");
context = new Context(new GivenGreenLight());
context.operate(); //执行了第二个锦囊了
System.out.println("\n\n\n\n\n\n\n\n");
System.out.println("-----------孙权的小兵追了,咋办?拆第三个
-------------");
context = new Context(new BlockEnemy());
context.operate();
System.out.println("\n\n\n\n\n\n\n\n");

}
}

 

原创粉丝点击