Effective Java 学习笔记(21)
来源:互联网 发布:西门子vb脚本 编辑:程序博客网 时间:2024/06/05 18:25
使用函数对象表示策略。 实际上就是以Java的方式来实现函数指针。
用Java的方式实现,首先可以定义一个泛型接口,
// Strategy interface
public interface Comparator<T> {
public int compare(T t1, T t2);
}
然后用一个类来实现它。这个类最好的sington模式,因为它没有状态,没有成员变量。
有时也可采用匿名类的方式
Arrays.sort(stringArray, new Comparator<String>() {
public int compare(String s1, String s2) {
return s1.length() - s2.length();
}
});
但是这种方式每运行一次,就会新创建一个对象。
因此,对于频繁使用的场合,最好用个静态的final 域来保存。
class Host {
private static class StrLenCmp
implements Comparator<String>, Serializable {
public int compare(String s1, String s2) {
return s1.length() - s2.length();
}
}
// Returned comparator is serializable
public static final Comparator<String>
STRING_LENGTH_COMPARATOR = new StrLenCmp();
... // Bulk of class omitted
}
函数指针的主要用途就是实现策略(Strategy)模式,为了在Java中实现这种模式,要声明一个接口来表示该策略声明了该接口的类。当一个具体策略只被使用一次时,通常使用匿名类来声明和实例化这个具体策略类。当一个具体策略类是设计用来重复使用的时候,它的类通常就要被实现为私有的静态成员类,并通过公有的静态final域被导出,其类型为该策略接口。
- Effective Java 学习笔记(21)
- effective java学习笔记
- Effective java学习笔记
- effective java学习笔记
- effective java 学习笔记
- Effective Java 学习笔记
- Effective Java 学习笔记
- Effective Java学习笔记
- Effective Java学习笔记
- Effective Java学习笔记
- Effective Java 学习笔记
- Effective java --学习笔记
- 《Effective Java》学习笔记(1)
- 《Effective Java》学习笔记(3)
- 《Effective Java》学习笔记(4)
- 《Effective Java》学习笔记1
- 《Effective Java》学习笔记2
- 《Effective Java》学习笔记3
- 列表查询WebPart
- 如何关联Silverlight和ASP.NET项目 转自http://www.nocoo.us/2009/11/silverlight-asp-net-build-link/
- JAVA英文翻译表--IT术语中英对照
- Test Driven Development and GUI Testing on the Android platform: Temperature Converter sample
- 中国科大与中科院数学院全面合作并创办"华罗庚班"
- Effective Java 学习笔记(21)
- 转贴:U盘安装Xp系统教程
- direct学习笔记-数学基础
- Android Testing: ContentProvider integration test using mock content
- Visual Studio 2010建模学习(十二) - C/C++代码的可视化
- java捕获音视频
- 强大的SPGridView
- rtexprvalue
- js中replace的用法