论坛首页 入门讨论版 设计模式

请问java的所谓“回调”机制是否就是策略模式?

浏览 413 次
该帖已经被评为新手帖
作者 正文
时间:2008-05-21
网上一段关于java回调机制的浅析:
该文章转载自网络大本营:http://www.xrss.cn/Dev/JAVA/20072810170.Html
public class Test{
   public static void main(String[] args){

     FooBar foo=new FooBar();
     foo.setCallBack(
        new ICallBack(){
        public void postExec(){System.out.println("method executed.");}
        }
     );

   }
}

public interface ICallBack(){
  void postExec();
}

public class FooBar{
  private ICallBack callBack;
  public void setCallBack(ICallBack callBack){
    this.callBack=callBack;
  }
  public void doSth(){
     ....
     callBack.postExec();
  }
  ..
}



感觉和Strategy(策略)模式基本一个样,请指教二者是否就没什么太大区别?
   
时间:2008-05-21
我理解的策略模式就是将经常变动的算法拿出来让用户自己实现,而框架则负责那些不变的部分
那么回调应该属于实现策略模式的一种手段
当然还有其他的方式也可以实现策略模式
   
0 请登录后投票
时间:2008-05-21
java中的回调实现真的很烦,
要是能传function就好了。
   
0 请登录后投票
时间:2008-05-21
难道不像Command 命令模式?
   
0 请登录后投票
时间:2008-05-21
icefire 写道
java中的回调实现真的很烦,
要是能传function就好了。


Java7加入闭包后应该就好了
   
0 请登录后投票
时间:2008-05-21
Eastsun 写道
icefire 写道
java中的回调实现真的很烦,
要是能传function就好了。


Java7加入闭包后应该就好了

闭包对性能影响的大不大的?
   
0 请登录后投票
时间:2008-05-21
回调对应的应该是Observer模式,也即java的事件机制。就是说提供一个事件接口,等事件发生时调用你注册的监听对象(实现这个事件接口),此谓回调。
   
0 请登录后投票
时间:2008-05-22
被评为新手帖,晕,新手不是这样判断地。
java中的回调实现我觉得不算烦,挺自然。我觉得不必过于追求某些教条。相比于不考虑架构和模式我更反感过度设计言毕模式,因为前者有可能是有潜力的“新手”,而后者肯定是没前途的老人。
这么看所谓回调也就差不多是策略模式了,但是我不认为他算是Observer模式,虽然直观上看可以这么说但是两种模式的侧重点明显不一样,所谓模式本来就大同小异,区别不同模式的依据就是其侧重点,也就是应用的场景、关注点、想解决什么...照楼上的看法那么连visitor访问者模式也应该算是回调的了,而实际上是访问者模式运用了回调手法而已。
Observer观察者模式和java的事件机制EventListener也是不一样的啊,api里就是分开的,观察者模式里没有事件这个角色。
也有点像commend...

其实23模式除了创建的工厂和单件、用于集合的组合和访问者、被整合进Java API的观察者和iterator,其他的我觉得都差不多:)
   
0 请登录后投票
论坛首页 入门讨论版 设计模式

跳转论坛:
JavaEye推荐