`
paladin1988
  • 浏览: 320713 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

策略模式的一个简单例子

 
阅读更多

 

策略模式:创建一个能够根据所传递的参数对象的不同而具有不同行为的方法,称为策略模式;这类方法包含所要执行的算法中固定不变的部分,而“策略”包含变化的部分。策略就是传递进去的参数对象,它包含要执行的代码。

 

 

/*
 *  a simple example about Strategy model
 *  quote from thinking in java 5th page175
 */

package com.thinking.useinterface;

import java.util.Arrays;

class Processor {
	public String name() {
		return getClass().getSimpleName();
	}
	
	Object process(Object input) {
		return input;
	}
}

class Upcase extends Processor {
	String process(Object input) {	//convariant 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) {
		return Arrays.toString(((String)input).split(" "));
	}
}

public class Apply {
	public static void process(Processor p, Object s)
	{
		System.out.println(" Using Processor " + p.name());
		System.out.println(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);
	}

}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics