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

来源:互联网 发布:sql的sum函数 编辑:程序博客网 时间:2024/06/05 16:44

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;//默认初始化为0private final long id = counter++;//先赋值给id为0public 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()方法,即便可以运行






0 0
原创粉丝点击