设计模式之策略模式(Strategy Model)
2015-02-03 10:26
253 查看
1.使用场景.有个算法有许多版本,使用时用户决定使用哪一个版本。(比如排序算法,有插入排序,选择排序,冒泡排序,快速排序,归并排序等许多排序算法,在使用的时候,用户决定使用哪一个具体的排序算法)。
2.实现
1)定义一个接口(interface)
2)每一个子类实现一个版本。
PS:加入每一个版本都有一些相同的部分,那么可以使用回调函数的方法来做这些相同的部分。
Example Code:
打印服务,打印接口类PrintInterface提供PrintA,PrintB两种打印服务,上下文类是PrintContext,用户可以通过它调用打印服务,具体的代码清单如下:
public class PrintContext {
private PrintInterface printInterface;
public PrintContext(PrintInterface pi){
this.printInterface = pi;
}
public void run(){
this.printInterface.print();
}
public void changeStrategy(PrintInterface pi){
printInterface = pi;
}
}
public interface PrintInterface {
abstract public void print();
}
public class PrintA implements PrintInterface{
@Override
public void print() {
System.out.println("this is printA");
}
}
public class PrintB implements PrintInterface{
@Override
public void print() {
System.out.println("this is printB");
}
}
public class maintest {
public static void main(String[] args) {
PrintContext pcContext = new PrintContext(new PrintA());
pcContext.run();
pcContext.changeStrategy(new PrintB());
pcContext.run();
}
}
2.实现
1)定义一个接口(interface)
2)每一个子类实现一个版本。
PS:加入每一个版本都有一些相同的部分,那么可以使用回调函数的方法来做这些相同的部分。
Example Code:
打印服务,打印接口类PrintInterface提供PrintA,PrintB两种打印服务,上下文类是PrintContext,用户可以通过它调用打印服务,具体的代码清单如下:
public class PrintContext {
private PrintInterface printInterface;
public PrintContext(PrintInterface pi){
this.printInterface = pi;
}
public void run(){
this.printInterface.print();
}
public void changeStrategy(PrintInterface pi){
printInterface = pi;
}
}
public interface PrintInterface {
abstract public void print();
}
public class PrintA implements PrintInterface{
@Override
public void print() {
System.out.println("this is printA");
}
}
public class PrintB implements PrintInterface{
@Override
public void print() {
System.out.println("this is printB");
}
}
public class maintest {
public static void main(String[] args) {
PrintContext pcContext = new PrintContext(new PrintA());
pcContext.run();
pcContext.changeStrategy(new PrintB());
pcContext.run();
}
}
相关文章推荐
- 设计模式之策略模式(Strategy Model)
- 【设计模式】使用unity实现策略模式(strategy model)
- 设计模式随笔系列:鸭子-策略模式(Strategy)[原]
- 设计模式(18)-策略模式(Strategy)
- 设计模式之Strategy(策略)
- 设计模式解析(第二版)笔记4 Strategy 策略模式
- 设计模式(三)[策略(Strategy)模式]
- 设计模式之Strategy(策略)
- 学习设计模式之旅 / 策略模式 (Strategy) 推荐
- 设计模式学习1——策略模式(Strategy)
- Java设计模式-----Strategy策略模式
- 设计模式之策略模式(Strategy)
- 设计模式之Strategy(策略)
- 设计模式之Strategy(策略)
- 设计模式与泡mm的关系之strategy策略模式及再思考
- 设计模式随笔系列:鸭子-策略模式(Strategy)
- 设计模式之Strategy(策略)
- Head First 设计模式 C++实现-Strategy(策略模式)
- Head First 设计模式 C++实现-Strategy(策略模式)
- 设计模式(20)-策略模式(Strategy)