【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
- 【ThinkingInJava】12、完全解耦,策略设计模式(2)
- 【ThinkingInJava】10、完全解耦,策略设计模式
- 【ThinkingInJava】14、适配器设计模式 (2)
- 策略设计模式,适配器设计模式,以及完全解耦
- 【ThinkingInJava】13、适配器设计模式
- 设计模式:2)策略设计模式
- 【ThinkingInJava】42、装饰器设计模式
- 设计模式(12):策略模式
- 设计模式(策略模式2)
- java设计模式(2)策略模式
- C++设计模式(2):策略模式
- 设计模式12:策略模式
- 设计模式-12-策略模式
- 设计模式12-策略模式
- 设计模式:2策略模式
- 设计模式【2】:策略模式
- 设计模式(策略模式)
- 设计模式(策略模式)
- Tur_1-01PHP环境搭建
- ORA-32017与ORA-02095:修改db_block_size
- Metasploit启动时Failed to connect to the database
- Objective-C - @property与@synthesize
- 模式识别:PCA主分量分析与Fisher线性判别分析
- 【ThinkingInJava】12、完全解耦,策略设计模式(2)
- ffmpeg-php安装与使用
- 数据结构练习-我的集合我做主
- 背包 POJ2465 Adventures in Moving
- EMC测试-基础2EMI测试_辐射发射
- Objective-C - 构造方法
- 美女图片
- form总结
- 安卓小伙征战IOS UIScrollView