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");

}

}






原创粉丝点击