日期:2014-05-20  浏览次数:20783 次

java回调函数和策略模式
今天看了一下java的回调函数,发现其其实原理和策略模式是一样的(个人认为,如果不对的话可以指出谢谢),然后我自己又想了想是这样的理解他们的区别的:首先策略模式属于一种行为模式,他应用的场景是同一个客户端调用同一个方法可是执行的结果不一样说白了就是策略接口的实现类是一直换的,想要哪个策略就话哪个策略。而java回调函数虽然实现上和策略模式一样(定义一个接口,把接口的实现类注入到相应的类中),但是他的场景是接口的实现类是基本不会换的不像策略模式一样主要就是换策略的实现。java回调强调的是在调用这个接口前做一些别的事省的人家一直在那等(个人理解就是在调用接口的实现的时候等自己需要做的事做完了然后在调用刚才那个叫我的人)。再通俗一点就是策略模式主要换的是策略的实现类,java回调主要就是在调用接口实现类前首先进行自己的处理完成后再调用其实现类。。。。呵呵不知道我这样理解对不对求大牛指点。。。。

------解决方案--------------------
学习,共同进步
------解决方案--------------------
单从代码实现上来看,很多模式都是相似的,我认为模式应该从需要解决什么样问题的角度来区分,策略模式让客户端提供部分实现代码来完成所需工作(典型的是jdk中的排序比较器Comparator),java中没有函数指针,就通过接口来模拟实现策略模式。

回调函数应该属于观察者模式的一种,目的是为了替代轮循机制,将组件之间的耦合性降低。
------解决方案--------------------
引用:
单从代码实现上来看,很多模式都是相似的,我认为模式应该从需要解决什么样问题的角度来区分,策略模式让客户端提供部分实现代码来完成所需工作(典型的是jdk中的排序比较器Comparator),java中没有函数指针,就通过接口来模拟实现策略模式。

回调函数应该属于观察者模式的一种,目的是为了替代轮循机制,将组件之间的耦合性降低。


弱弱的问句题外话,底层调用上层注册(或者叫传递?)下去的接口,底层不也是要一直轮询吗?
------解决方案--------------------
回调函数貌似是观察者模式中的概念,依据事件驱动,原来的主调方和被调方换位行事。

策略模式基于同一策略接口实现了多种策略,可以在同一接口的荫蔽下实现多策略转换。

但两者有什么关联呢?
------解决方案--------------------
引用:
引用:单从代码实现上来看,很多模式都是相似的,我认为模式应该从需要解决什么样问题的角度来区分,策略模式让客户端提供部分实现代码来完成所需工作(典型的是jdk中的排序比较器Comparator),java中没有函数指针,就通过接口来模拟实现策略模式。

回调函数应该属于观察者模式的一种,目的是为了替代轮循机制,将组件之间的耦合性降低。……

底层不需要轮循,底层就是具体做事情的一方,事情做完了就通知注册监听者
------解决方案--------------------
引用:
引用:引用:
引用:单从代码实现上来看,很多模式都是相似的,我认为模式应该从需要解决什么样问题的角度来区分,策略模式让客户端提供部分实现代码来完成所需工作(典型的是jdk中的排序比较器Comparator),java中没有函数指针,就通过接口来模拟实现策略模……


监听器回调模式这种可以适用于很多场景,比如我有一个程序有个主界面和用户交互,后台又创建了一个线程做其他事情如下载文件,这样我就可以注册一个监听到下载线程中去,下载完了它会通知我从而更新界面提醒用户。这种场景下载线程知道什么时候事情会结束从而可以适时的发出通知。

你所说的中断一般存在于GUI程序,如按钮监听,外部IO设备如鼠标被点击了一下,从而引发硬件中断,处理器中断引脚电压变高,它就会去调用相应的中断处理程序,从而调用到GUI程序中的相应方法,最终调用到注册进去的用户处理代码,完成按钮点击事件。