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()方法,即便可以运行
时间: 2024-10-06 00:13:49