回调函数之感想
2015-08-03 23:34
162 查看
回调函数的问题一直困扰我,网上也是众说纷纭,却一直不能解决我的困惑。
1.回调函数的意义是: 当你想要别人的代码执行你的代码时,而你又不能修改别人代码。(网上有人这么说)
加入我个人的理解,这里的不能修改应该是指,你不能去干涉别人代码,但是可以协商或者提出需求说 我需要一个接口,在你完成XX操作后,调用我的DoXX函数,这时,大家都会想到一个方法,直接让别人的代码执行DoXX函数,不就ok了? 我也在困惑~ ,今天看到了这个说法,回调函数的实现可以有多种,别人代码直接调用你的方法也ok,但是在软件设计时,我们要遵循模块内内聚,模块间低耦合,它使得模块间更多的从事着单向的调用工作,单项的调用,当高层需要使用低层的状态时,使用普通的函数调用即可,当低层关心高层的状态变化时,及需要通过回调函数来实现。这里的高低是相对的~)
1.回调函数一般使用函数指针实现。什么时间怎么样将自己的函数指针“注册”到别人代码中?
由第一条知道,模块间一般是单向的调用关系,比如B模块的接口是暴露给A模块的,及A中可以对B的接口进行使用,反之则不行,但是B需要知道A的一些状态,来进行自己下一步的操作,简单的说,B需要调用A的函数时, 这时我们可以将模块A的指针或者对象在模块B中声明,这违反了软件设计的原则。回调函数的解决方法是,B提供一个接口,这个接口接受一个函数指针和参数,在A模块中,我们将B需要的函数通过该接口进行注册。然后b执行时,就可以完成需要的状态了。
1.回调函数的意义是: 当你想要别人的代码执行你的代码时,而你又不能修改别人代码。(网上有人这么说)
加入我个人的理解,这里的不能修改应该是指,你不能去干涉别人代码,但是可以协商或者提出需求说 我需要一个接口,在你完成XX操作后,调用我的DoXX函数,这时,大家都会想到一个方法,直接让别人的代码执行DoXX函数,不就ok了? 我也在困惑~ ,今天看到了这个说法,回调函数的实现可以有多种,别人代码直接调用你的方法也ok,但是在软件设计时,我们要遵循模块内内聚,模块间低耦合,它使得模块间更多的从事着单向的调用工作,单项的调用,当高层需要使用低层的状态时,使用普通的函数调用即可,当低层关心高层的状态变化时,及需要通过回调函数来实现。这里的高低是相对的~)
1.回调函数一般使用函数指针实现。什么时间怎么样将自己的函数指针“注册”到别人代码中?
由第一条知道,模块间一般是单向的调用关系,比如B模块的接口是暴露给A模块的,及A中可以对B的接口进行使用,反之则不行,但是B需要知道A的一些状态,来进行自己下一步的操作,简单的说,B需要调用A的函数时, 这时我们可以将模块A的指针或者对象在模块B中声明,这违反了软件设计的原则。回调函数的解决方法是,B提供一个接口,这个接口接受一个函数指针和参数,在A模块中,我们将B需要的函数通过该接口进行注册。然后b执行时,就可以完成需要的状态了。
相关文章推荐
- js中的内部属性与delete操作符
- lucence.net+盘古分词
- 将InputStream(输入流)转成String 的方法
- 学习指针型函数和指向函数的指针
- 前五天知识点总结
- 通俗理解TCP握手次数是三次
- 一个例子读懂风险投资
- 一个例子读懂风险投资
- 一个例子读懂风险投资
- JS之原型与原型链
- java 枚举类小结 Enum
- jQuery选择器总结
- hdu 1166 敌兵布阵
- js时间间隔和倒计时
- 数据结构之链表、栈和队列 java代码实现
- IOS绘图API绘制直线几何图形
- Oracle笔记-表的管理
- Android利用Binder类实现对服务的调用
- dom4j将xml转换成对象
- 父类不含无参构造方法子类构造方法必须显式调用