第五章 接口和抽象类应用-v2.ppt
文本预览下载声明
第5章 抽象类与接口的应用 ;抽象类的应用;;;;接口的应用;;;适配器模式;;;工厂模式;;;增加工厂类;;代理模式;;代理部分;;策略模式;策略模式【Strategy Pattern;
public interface IStrategy {
//每个锦囊妙计都是一个可执行的算法
public void operate();
}
;public class BackDoor implements IStrategy {
public void operate() {
System.out.println(找乔国老帮忙,让吴国太给孙权施加压力);
}
};public class GivenGreenLight implements IStrategy {
public void operate() {
System.out.println(求吴国太开个绿灯,放行!);
}
};public class BlockEnemy implements IStrategy {
public void operate() {
System.out.println(孙夫人断后,挡住追兵);
}
};public class Context {
//构造函数,你要使用那个妙计
private IStrategy straegy;
public Context(IStrategy strategy){
this.straegy = strategy;
}
//使用计谋了,看我出招了
public void operate(){
this.straegy.operate();
}
};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);
}
};就这三招,搞的周郎是“陪了夫人又折兵”呀!这就是策略模式,高内聚低耦合的特点
也表现出来了,还有一个就是扩展性,也就是OCP 原则,策略类可以继续增加下去,只要修
改Context.java 就可以了。;接口与抽象类的区别
显示全部