java设计模式(1)---策略模式
来源:互联网 发布:淘宝个人主页怎么看 编辑:程序博客网 时间:2024/06/05 03:25
刘备要去江东娶老婆,走之前诸葛亮给赵云(伴郎)三个锦囊妙计,说是按天机拆开解决棘手问题,搞到最后周瑜赔了夫人又折兵。
先说场景中的要素:三个妙计,一个锦囊,一个赵云
三个妙计都是同一类的东东,写一个接口:
public interface IStrategy {
//每个锦囊妙计都有一个执行算法
publicvoid operate();
}
然后再写三个实现类:
妙计一:找乔国老帮忙通知吴国太,使孙权不能杀刘备
public class BackDoorimplements IStrategy{
@Override
publicvoid operate() {
System.out.println("找乔国老帮忙,让吴国太给孙权施加压力");
}
}
妙计二:在荆州呆时间太长,但是孙权不能轻易放走刘备,于是找吴国太帮忙,开个绿灯
public class GivenGreenLightimplements IStrategy{
@Override
publicvoid operate() {
System.out.println("求吴国太开个绿灯,放行!");
}
}
妙计三:孙权周瑜派兵追来,不肯放刘备回去,孙尚香断后
public class BlockEnemyimplements IStrategy{
@Override
publicvoid operate() {
System.out.println("孙夫人断后,挡住追兵");
}
}
妙计都有了,还需要一个锦囊:
public class Context {
private IStrategystraegy;
public Context(IStrategy strategy){
this.straegy = strategy;
}
publicvoid operate(){
this.straegy.operate();
}
}
最后是使用锦囊的主角赵云
public class ZhaoYun {
publicstaticvoid 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\n\n");
System.out.println("---------------刘备乐不思蜀拆第二个---------------");
context = new Context(new GivenGreenLight());
context.operate();
// System.out.println("\n\n\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\n\n");
}
}
- java设计模式(1)---策略模式
- Java 设计模式 (1) 策略模式
- java 设计模式------1、策略模式
- Java设计模式1:策略模式
- Java设计模式 -- 策略模式
- java设计模式-----策略模式
- java 设计模式-策略模式
- java设计模式--策略模式
- java设计模式-策略模式
- java设计模式-策略模式
- java设计模式--策略模式
- java设计模式---策略模式
- java设计模式---策略模式
- java设计模式---策略模式
- 【Java设计模式】策略模式
- java设计模式--策略模式
- Java设计模式----策略模式
- Java设计模式------------策略模式
- es优化
- linux 命令
- SlidesJS基本使用方法和官方文档解释 【Jquery幻灯片插件 Jquery相册插件】
- servlet的ServletContext和全局变量和应用的物理路径
- 搜索关键字符串NSSCanner:scanUpToString和scanString
- java设计模式(1)---策略模式
- .net server control
- mouseout与mouseleave
- uva 10344 23 Out of 5
- 我的日记----IOS系统架构
- hdu2068RPG的错排
- 二维数组查找
- oracle分区了解
- mysql 不能插入中文的解决办法,修改mysql的字符集,操作见蓝色字体部分