第21条:用函数对象表示策略
来源:互联网 发布:旅游网络投诉举报平台 编辑:程序博客网 时间:2024/05/24 04:15
函数对象:
引入情景:不像c语言等语言,Java没有提供函数指针。所以要实现相同的功能就要用到“函数对象”。
解释:调用对象的方法通常就是执行该对象(that object)上的某项操作。然而也可以定义这样的对象,他的方法执行其他对象(other object)上的操作。
如果一个类仅仅导出这样一个方法,他的实例就等同于指向该方法的指针。这样的实例被称为函数对象(function object)。
图解:
应用:函数指针(函数对象)的主要用途就是实现策略模式。参看http://blog.csdn.net/nasebanaru/article/details/18942103 我们知道实现Comparator接口的类的对象就是函数对象(由该对象指向compare()方法)。
补充:当一个具体策略只被使用一次时,通常使用匿名类来声明和实例化这个具体策略类。
Collections.sort(list,new Comparator<String>() {@Overridepublic int compare(String arg0, String arg1) {// TODO Auto-generated method stubreturn 0;}});
当一个具体策略类是设计用来重复使用的时候,他的类通常就要被实现为私有的静态成员类,并通过共有的静态final域导出(策略接口类型)。
class Host{private static class StrLenCmp implements Comparator<String>{@Overridepublic int compare(String o1, String o2) {// TODO Auto-generated method stubreturn 0;}}public static final Comparator<String> COMPARATOR=new StrLenCmp();}第二段代码在实际中的应用就是String类的CASE_INSENSITIVE_ORDERy域:Arrays.sort(a1,String.CASE_INSENSITIVE_ORDER); 具体策略类被定义为了一个常量对象。
1 0
- 第21条:用函数对象表示策略
- Effective Java 第 21 条: 用函数对象表示策略
- 第21条:用函数对象表示策略
- 第21条:用函数对象表示策略
- 《Effective java》读书记录-第21条-用函数对象表示策略
- Effective Java学习--第21条:用函数对象表示策略
- (21):用函数对象表示策略
- 用函数对象表示策略
- 用函数对象表示策略。
- effective java(21) 之用函数对象表示策略
- 第二十一条:函数对象表示策略
- Effective Java(用函数对象表示策略、优先使用静态成员类)
- Effective Java(用函数对象表示策略、优先使用静态成员类)
- 用函数对象标示策略
- 学习effective java-21类和接口之使用功能对象表示策略
- Effective Objective-C 2.0 第5条:用枚举表示状态、选项、状态码
- effective stl 第46条:考虑使用函数对象而不是函数作为STL算法的参数
- 定义表示乘法的函数对象
- c# 自定义事件和委托
- 大二层网络还是重建会话层
- Overloading,overriding,and extending functions and events 重载,重写和扩展函数和事件
- 最短路自学总结
- C++第2周(春)项目3 文件+结构体实现实用系统
- 第21条:用函数对象表示策略
- 博客中插入Latex 公式
- 辗转相除法求最大公约数
- 【Dijk】Hdu 2066
- 设计模式C++实现(1)——工厂模式
- web DataGridView 冻结表头和列
- 常用辅助工具
- 路虎:拥有最全面功能的SUV
- 使用html5画一个棋盘