`
TonyLian
  • 浏览: 396722 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【第22条】用类和接口来代替函数指针

阅读更多

    C语言中的函数指针又叫回调(callback)。是用参数传入一个函数指针,调用函数就可以根据不同的传入参数,实际上调用不同的函数了。

 

    这种回调在ActionScript3语言中就是Function类型,Flex的事件监听器就是一个典型的使用场景。将一个Function类型所表示的函数作为参数传给事件监听器,当此事件发生时,就自动调用这个函数。

 

    在设计模式中的策略模式也是一个典型的应用场景。C语言程序通常使用函数指针来实现策略模式。Java中没有指针,我们可以使用类和接口来替代之。

 

    具体的例子可以看书,也可以看看这位高人写的《设计模式》http://www.iteye.com/topic/372233

 

 

 

    这一条很简单,就到这里了。

 

 

【Effective Java 学习笔记】系列连载专题请见:
http://tonylian.iteye.com/categories/64208

分享到:
评论

相关推荐

    C++编程规范101条规则、准则与最佳实践PDF.rar

    第22条 尽量减少定义性依赖。避免循环依赖 40 第23条 头文件应该自给自足 42 第24条 总是编写内部#include保护符,决不要编写外部#include保护符 43 函数与操作符 45 第25条 正确地选择通过值、(智能)...

    C++智能指针的原理和实现.pdf

    C++智能指针的原理和实现 智能指针的原理和实现 ⼀、智能指针起因 ⼀、智能指针起因 在C++中,动态内存的管理是由程序员⾃⼰申请和释放的,⽤⼀对运算符完成:new和delete。 new:在动态内存中为对象分配⼀块空间并...

    新手学习C++入门资料

    这种情况多出现在用一个通用的函数指针调用多个函数的场合,其中有些函数不需要函数指针声明中的所有参数。看下面的例子: int fun(int x,int y) { return x*2; } 尽管这样的用法是正确的,但大多数C和C++的...

    疯狂JAVA讲义

    9.6.5 使用类文件代替资源文件 350 9.6.6 使用NumberFormat格式化数字 350 9.6.7 使用DateFormat格式化日期 352 9.7 本章小结 355 本章练习 355 第10章 异常处理 356 10.1 异常概述 357 10.2 异常处理机制 ...

    《你必须知道的495个C语言问题》

    3.14 如果我不使用表达式的值,那我应该用i++还是++i来做自增呢? 39 3.15 我要检查一个数是不是在另外两个数之间,为什么if(a b c)不行? 40 3.16 为什么如下的代码不对?int a=1000, b=1000; long int c=a * ...

    python cookbook(第3版)

    第二章:字符串和文本 2.1 使用多个界定符分割字符串 2.2 字符串开头或结尾匹配 2.3 用Shell通配符匹配字符串 2.4 字符串匹配和搜索 2.5 字符串搜索和替换 2.6 字符串忽略大小写的搜索替换 2.7 最短匹配模式...

    C语言编程要点

    5.9. 什么时候应该用宏代替函数? 83 5.10. 使用宏更好,还是使用函数更好? 83 5.11. 在程序中加入注释的最好方法是什么? 83 5.12. #include 和#include“file”有什么不同? 84 5.13. 你能指定在编译时包含哪一个...

    c程序设计习题参考(谭浩强三版)习题参考解答

    第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上再想吃时,见只剩一个桃子了。求第一天共摘多少桃子。 24 6.11用迭代法求 24 6.12用牛顿迭代法求方程2x3-...

    C语言FAQ 常见问题列表

    o 2.14 我总算弄清除函数指针的声明方法了, 但怎样才能初始化呢? * 3. 结构、联合和枚举 o 3.1 声明 struct x1 { ...}; 和 typedef struct { ...} x2; 有什么不同? o 3.2 为什么 struct x { ...}; x ...

    Tcl_TK编程权威指南pdf

    第22章 tk实例解析 execlog example browser tcl shell 第23章 打包摆放布局管理器(pack) 朝一侧摆放 水平与垂直难叠 空腔模型( cavity model) 打包摆放空间(packing space)与显w空间(display ...

    【。net 专业】 面试题

    答:据说相当于函数指针,定义了委托就可以在不调用原方法名称的情况下调用那个方法. msdn2005中是这样解释的: 委托具有以下特点: 委托类似于 C++ 函数指针,但它是类型安全的。 委托允许将方法作为参数进行传递。 ...

    Qt Creator 的安装和hello world 程序+其他程序的编写--不是一般的好

    第二个按钮我们自己写了槽函数语句,其实图形的设计与直接写代码效果是 一样的。 这个程序里我们实现了两类窗口打开的方式,一个是自身消失而 后打开另一个窗口,一个是打开另一个窗口而自身不消失。可以看到他们...

    同学的打包代码

    定义一个计算器类,该类包括两个组件对象,一个计算引擎和一个用户接口,用户接口对象处理接受的键盘输入信息,并显示答案,计算引擎对象对给出的数据执行相应操作,并存储操作的结果。 3. 设计一个Database类 设计...

    你必须知道的495个C语言问题(PDF)

    1.14 我总算弄清除函数指针的声明方法了, 但怎样才能初始化呢? . . 5 2 结构、联合和枚举7 2.1 声明struct x1 f . . . g; 和typedef struct f . . . g x2; 有什么不同? . 7 2.2 为什么struct x f . . . g; x ...

Global site tag (gtag.js) - Google Analytics