`
wenjinglian
  • 浏览: 828459 次
  • 性别: Icon_minigender_1
  • 来自: 株洲->深圳
社区版块
存档分类
最新评论

effective java 第21条:用函数对象表示策略

    博客分类:
  • JAVA
阅读更多

public class Host {
    
    private static class StrLenCmp implements Comparator<String>,Serializable {
        private static final long serialVersionUID = -2947076330971319599L;

        @Override
        public int compare(String o1, String o2) {
            return o1.length() - o2.length();
        }
    }
    
    public static final Comparator<String> STRING_LENGTH_COMPARATOR = new StrLenCmp();
}
 

简而言之,函数指针的主要用途就是实现策略(Strategy)模式。为了在Java中实现这种模式,要声明一个接口来表示该策略,并且为每个具体策略声明一个实现了该接口的类。当一个具体策略只被使用一次时,通常使用匿名类来声明和实例化这个具体策略类。当一个具体策略是设计用来重复使用的时候,它的类通常就要被实现为私有的静态成员类,并通过公有静态final域被导出,其类型为该策略接口

 

分享到:
评论

相关推荐

    5本java学习用书

    Java是一种广泛使用的面向对象的编程语言,以其跨平台、高性能和丰富的类库而闻名。这里提供的资源包含了五本深入学习Java的重要书籍,以及可能包含的一些示例代码,这对于初学者和有经验的开发者来说都是宝贵的资源...

    Effective C++ 中文版

    为反映出现代设计考虑,对第二版论题做了广泛的修订,包括异常(exceptions)、设计模式(design patterns)和多线程(multithreading)。  《Effective C++中文版(第3版改善程序与设计的55个具体做法)》的重要...

    java面试知识

    - **算法**:比较相邻元素,如果第一个比第二个大,就交换它们的位置。 - **复杂度**:最坏情况和平均情况的时间复杂度为O(n^2)。 ##### 二分查找法 - **算法**:每次将查找区间分成两半,根据中间元素与目标值的...

    Java学习总结(2023/03/19)

    本文将基于“Java学习总结(2023/03/19)”的主题,深入探讨Java的核心概念、设计模式以及最佳实践,结合《Effective Java》的学习心得,为初学者和进阶者提供一份详尽的指南。 首先,Java语言的基础知识包括语法、...

    java2008技术文档

    第二章涉及结构化程序设计,讲解了控制流程(如if-else语句、switch语句、for和while循环)、函数的使用等。第三章则重点讲述面向对象编程,包括类、对象、继承、多态性等概念。第四章涵盖了数组、字符串、向量和...

    我的题库2006-2007

    - **实现方式**:要创建一个忽略大小写的字符串类,可以通过重定义`std::basic_string`模板类的第二个模板参数(`traits_type`)来实现。具体实现可以参考《Effective C++》。 #### 13. 调用约定(Call Convention...

    STEP_V21_Code.zip

    版本号 "V21" 指示这是该软件或代码集合的第 21 个版本,意味着它经过了多次迭代和改进。由于没有具体的标签,我们可以基于常见的编程实践来推测其中可能包含的知识点。 首先,这个压缩包可能包含了不同类型的文件...

    Perl 常见问题集

    - 使用Perl自带的调试器或第三方工具(如Devel::Cover)可以帮助定位错误。此外,编写测试用例并使用模块如Test::Simple等进行单元测试也是非常重要的步骤。 #### 十三、Perl与C交互 - **如何实现Perl与C语言的...

Global site tag (gtag.js) - Google Analytics