创建一个能够根据所传递参数对象不同而具有不同的行为的方法,称为策略设计模式。这类方法宝行索要执行的算法中固定不变的部分,而“策略”包含变化部分。策略就是传递进去的参数对象,他包含要执行的代码。这里processor对象就是一个策略,在main()方法中科院看到三种不同类型的策略应用到string类型的s对象上------------摘自java编程思想“接口”篇
//: interfaces/classprocessor/Apply.java
package com.fjnx.history.sourcecode.interfaces.classprocessor;
import java.util.*;
import static jdk.nashorn.internal.objects.Global.print;
/**
* processor类,有name()和process(Object input方法)
*/
class Processor {
/**
* 返回类名
*
* @return 类名
*/
public String name() {
return getClass().getSimpleName();
}
/**
* 返回object对象
*
* @param input 传入object对象
* @return 返回object对象
*/
Object process(Object input) {
return input;
}
}
class Upcase extends Processor {
String process(Object input) { // Covariant return
return ((String) input).toUpperCase();
}
}
class Downcase extends Processor {
String process(Object input) {
return ((String) input).toLowerCase();
}
}
class Splitter extends Processor {
String process(Object input) {
// The split() argument divides a String into pieces:
return Arrays.toString(((String) input).split(" "));
}
}
public class Apply {
public static void process(Processor p, Object s) {
print("Using Processor " + p.name());
print(p.process(s));
}
public static String s =
"Disagreement with beliefs is by definition incorrect";
public static void main(String[] args) {
process(new Upcase(), s);
process(new Downcase(), s);
process(new Splitter(), s);
}
} /* Output:
Using Processor Upcase
DISAGREEMENT WITH BELIEFS IS BY DEFINITION INCORRECT
Using Processor Downcase
disagreement with beliefs is by definition incorrect
Using Processor Splitter
[Disagreement, with, beliefs, is, by, definition, incorrect]
*///:~