java设计模式之行为型模式-策略模式
来源:互联网 发布:剑三明教脸型数据 编辑:程序博客网 时间:2024/04/28 07:35
策略设计模式
策略模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。比如每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中国交个人所得税”就有不同的算税方法。
定义了一族算法(业务规则);
封装了每个算法,算法之间在客户端是各自独立的;
这族的算法可互换代替(interchangeable)。
适用性
许多相关类仅仅是行为不同。
需要使用一个算法的不同实现。
算法使用了客户不应该知道的数据。策略模式可以避免暴露复杂的、与算法相关的数据结构。
一个类定义了很多行为,而且这些行为在这个类里的操作以多个条件语句的形式出现。策略模式将相关的条件分支移入它们各自的 Strategy 类中以代替这些条件语句。
UML
例子
首先定义策略接口:
/**
* 一个具体的策略应该实现该接口,并且一个上下文对象Context应该持有该接口的引用
* @author dengfengdecao
*
*/
public interface Strategy {
void execute();
}
该接口定义了一个抽象的算法。
有了策略接口,接下来就是一个个具体的策略了:
public class FirstStrategy implements Strategy {
public void execute() {
// 在这里实现具体得算法策略
System.out.println("Called FirstStrategy.execute()");
}
}
public class SecondStrategy implements Strategy {
public void execute() {
// 在这里实现具体得算法策略
System.out.println("Called SecondStrategy.execute()");
}
}
public class ThirdStrategy implements Strategy {
public void execute() {
// 在这里实现具体得算法策略
System.out.println("Called ThirdStrategy.execute()");
}
}
以上定义了三个具体策略。接下来需要一个上下文对象:
/**
* 配置具体的策略并持有一个Strategy接口的引用
* @author dengfengdecao
*
*/
public class Context {
Strategy strategy;
public Context(Strategy strategy) {
super();
this.strategy = strategy;
}
public void execute() {
this.strategy.execute();
}
}
在这个对象里,引用了策略接口,并定义了一个构造函数来传递具体的策略对象。
最后在客户端测试:
public class StrategyClient {
public static void main(String[] args) {
Context context;
// 以下运行三个不同的策略
context = new Context(new FirstStrategy());
context.execute();
context = new Context(new SecondStrategy());
context.execute();
context = new Context(new ThirdStrategy());
context.execute();
}
}
结果:
一个更具体的例子可参考此文:http://blog.csdn.net/defonds/article/details/16832081
0 0
- java设计模式之行为型模式-策略模式
- Java设计模式之行为型模式(策略模式)
- 设计模式-行为型之策略模式
- java-行为型模式-策略设计模式
- java设计模式(行为型)之策略模式
- Java设计模式(行为型)之-策略模式
- 详解java设计模式(三)之策略模式(行为型)
- 设计模式 行为模式之策略模式
- java设计模式 -------- 行为模式 之 策略模式(1)
- java设计模式 -------- 行为模式 之 策略模式(2)
- java设计模式 -------- 行为模式 之 策略模式(3)
- java设计模式 -------- 行为模式 之 策略模式(4)
- 设计模式--行为模式--策略模式--Java
- 设计模式之行为型模式---策略模式
- 设计模式 - 行为型模式 - 策略模式
- 设计模式->行为型模式->策略模式
- 【设计模式】行为模式之Strategy策略
- java设计模式之行为型模式
- Mysql之对一些数据类型的选用
- OSI七层模型与TCP/IP模型
- chown chgrp chmod
- c语言 翻译密码
- 控制mysql的查询优化
- java设计模式之行为型模式-策略模式
- <BLE>CC2540主机事件回调函数
- 单链表进行归并排序
- Axure制作ipad原型
- MyBaits-快速入门
- Leetcode 12. Integer to Roman
- android自定义适配屏幕的ImageView
- 为了诗意的苟且又有何妨?
- 程序源弃坑之路6(java)