码迷,mamicode.com
首页 > 编程语言 > 详细

【ThinkingInJava】12、完全解耦,策略设计模式(2)

时间:2015-04-19 10:17:23      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:java编程思想   java   interface   extends   

Waveform.java

/**
* 书本:《Thinking In Java》
* 功能:完全解耦,策略设计模式
* 	  这里apply.process()方法可以接受任何类型的processor,并将其应用到一个Object对象上,然后打印结果
* 文件:Apply.java
* 时间:2015年4月2日16:50:55
* 作者:cutter_point
*/
package Lesson9Interfaces.filters;

public class Waveform 
{
	private static long counter;	//默认初始化为0
	private final long id = counter++;		//先赋值给id为0
	
	public String toString()
	{
		return "Waveform " + id;
	}
}

Filter.java

/**
* 书本:《Thinking In Java》
* 功能:完全解耦,策略设计模式
* 	  这里apply.process()方法可以接受任何类型的processor,并将其应用到一个Object对象上,然后打印结果
* 文件:Filter.java
* 时间:2015年4月2日20:03:00
* 作者:cutter_point
*/
package Lesson9Interfaces.filters;

public class Filter 
{
	public String name()
	{
		return this.getClass().getSimpleName();
	}
	
	public Waveform process(Waveform input) { return input; }	//记住,请加上public

}


LowPass.java

/**
* 书本:《Thinking In Java》
* 功能:完全解耦,策略设计模式
* 	  这里apply.process()方法可以接受任何类型的processor,并将其应用到一个Object对象上,然后打印结果
* 文件:LowPass.java
* 时间:2015年4月2日20:04:46
* 作者:cutter_point
*/
package Lesson9Interfaces.filters;

public class LowPass extends Filter 
{
	double cutoff;
	public LowPass(double cutoff) { this.cutoff = cutoff; }
	
	public Waveform process(Waveform input) { return input; }
}

HighPass.java

/**
* 书本:《Thinking In Java》
* 功能:完全解耦,策略设计模式
* 	  这里apply.process()方法可以接受任何类型的processor,并将其应用到一个Object对象上,然后打印结果
* 文件:HighPass.java
* 时间:2015年4月2日20:07:46
* 作者:cutter_point
*/
package Lesson9Interfaces.filters;

public class HighPass extends Filter 
{
	double cutoff;
	public HighPass(double cutoff) { this.cutoff = cutoff; }
	
	public Waveform process(Waveform input) { return input; }
}

BandPass.java

/**
* 书本:《Thinking In Java》
* 功能:完全解耦,策略设计模式
* 	  这里apply.process()方法可以接受任何类型的processor,并将其应用到一个Object对象上,然后打印结果
* 文件:BandPass.java
* 时间:2015年4月2日20:07:46
* 作者:cutter_point
*/
package Lesson9Interfaces.filters;

public class BandPass extends Filter 
{
	double lowCutoff, highCutoff;
	public BandPass(double lowCut, double highCut)
	{
		this.lowCutoff = lowCut;
		this.highCutoff = highCut;
	}
	public Waveform process(Waveform input) { return input; }
}


/*
 * 这个和前面那个process的耦合特别紧密
 * 
 */

输出:

Wind().play() MIDDLE_C  obj1
Percussion().play() MIDDLE_C  obj1
Stringed().play() MIDDLE_C  obj1
Brass.play() MIDDLE_C  obj1
Woodwind.play() MIDDLE_C  obj1


这个看起来似乎很适合Apply.process(),也就【ThinkingInJava】10里面的那个类,我前面有,http://blog.csdn.net/cutter_point/article/details/45098003

后面的文章里面,我们继续对这个类和前面那个Apply类进行对比,看起来相似,

但是你不能把

Filter用于Apply.process()方法,即便可以运行






【ThinkingInJava】12、完全解耦,策略设计模式(2)

标签:java编程思想   java   interface   extends   

原文地址:http://blog.csdn.net/cutter_point/article/details/45126257

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!