Java设计模式 策略模式
来源:互联网 发布:蜂窝移动数据无法清零 编辑:程序博客网 时间:2024/05/20 03:45
今天给大家带来Java设计模式中的策略模式,首先我们还是来看下策略模式的定义:
创建一个能够根据所传递的参数对象的不同而具有不同行为的方法,被称为策略设计模式。这些方法包含所要执行的算法中固定不变的部分,而“策略”包含变化的部分,策略就是传递进去的参数对象,他包含要执行的代码。下面我们看一个列子:
例如,假设有一个Processor类,他有一个name()方法;另外还有一个process()方法,该方法接收输入参数,修改它的值,然后产生输出。这个类作为基类而被扩展,用来创建各种不同类型的Processor。在本例中,Processor的子类将修改String对象(注意,返回类型可以是协变类型,这里介绍下什么是协变类型,Java SE5中添加了协变返回类型,他表示在导出类(子类)中的被覆盖的方法可以返回基类方法的返回类型的某种导出类(子类)型。)
package strategyimprove;
public class Processor {
public String name() {
return getClass().getSimpleName();
}
Object process(Object input) {
return input;
}
}
package strategyimprove;
public class Downcase extends Processor {
@Override
String process(Object input) {
// TODO Auto-generated method stub
return ((String)input).toLowerCase();
}
}
package strategyimprove;
import java.util.Arrays;
public class Splitter extends Processor {
@Override
String process(Object input) {
// TODO Auto-generated method stub
return Arrays.toString(((String)input).split(" "));
}
}
测试类:
package strategyimprove;
public class Apply {
public static String mStrategy = "strategy test";
public static void process(Processor p, Object s) {
System.out.println("uing processor " + p.name());
System.out.println(p.process(s));
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
process(new Upcase(), mStrategy);
process(new Downcase(), mStrategy);
process(new Splitter(), mStrategy);
}
}
控制台输出如下:
uing processor Upcase
STRATEGY TEST
uing processor Downcase
strategy test
uing processor Splitter
[strategy, test]
好了,到这里策略模式就和大家简单介绍完了,希望大家在项目中可以用的到。
- Java设计模式 -- 策略模式
- java设计模式-----策略模式
- java 设计模式-策略模式
- java设计模式--策略模式
- java设计模式-策略模式
- java设计模式-策略模式
- java设计模式--策略模式
- java设计模式---策略模式
- java设计模式---策略模式
- java设计模式---策略模式
- 【Java设计模式】策略模式
- java设计模式--策略模式
- Java设计模式----策略模式
- Java设计模式------------策略模式
- Java设计模式 - 策略模式
- java设计模式---策略模式
- java设计模式-策略模式
- java设计模式----策略模式
- 51nod 1378 夹克老爷的愤怒【贪心】
- 思维导图_Python知识点
- linux知识学习笔记一:命令行操作及常用命令使用
- phpcms起步模板的添加操作
- 文件操作(3)
- Java设计模式 策略模式
- Two Sum
- 求1+2+3+4+............+n的值?
- 小白成长日记(2)--选择排序之二元选择排序
- ROS-NAOqi(rviz moveit gazebo等)
- Reverse Integer
- Linux系统知识小结(九)
- Longest Common Prefix
- AOSP Google Nexus6P-angler刷入ROM文件