Observable/Observer,也许可以试试

解决方案 »

  1.   

    可以不可以做一个interface,把你接收到message后需要进行的操作写到interface里面,由clientimplement并且重载这些interface函数,然后直接将client界面传给message,这样在message里面就可以调用interface的函数而且能保证封装性吧
      

  2.   

    可以考虑MVC模式MVC不只能构造j2ee环境,对于j2se的构造也有很好的“分层”效果lz可以考虑设计出一个控制器
    message和client都通过这个层,来向对方发送命令比如,
    message收到一个信息,发送内容给控制器,
    控制器来传递给client,client显示给用户而且,根据lz的描述
    client里面逻辑处理和显示处理是在一起的,
    可以考虑分层设计,
    类似servlet和jsp的关系,
    servlet负责逻辑处理,然后把处理过的内容交给jsp完成做j2ee做多了,就老绕着j2ee说,见谅啊见谅,
    呵呵
      

  3.   


    你上面说的确实是这样,我的逻辑处理是放在 界面层里一起处理的。
    我想知道你说的
    “message收到一个信息,发送内容给控制器,
    控制器来传递给client,client显示给用户”
    怎么进行?
    因为jsp 是重新加载一个界面,或者挑转。这样的话,就不用去调用之前的。
    而我的界面,我想调用我的组件,如 label 改变内容,或者 jTextArea 打印文字等到。
      

  4.   


    你上面说的确实是这样,我的逻辑处理是放在 界面层里一起处理的。
    我想知道你说的
    “message收到一个信息,发送内容给控制器,
    控制器来传递给client,client显示给用户”
    怎么进行?
    因为jsp 是重新加载一个界面,或者挑转。这样的话,就不用去调用之前的。
    而我的界面,我想调用我的组件,如 label 改变内容,或者 jTextArea 打印文字等到。大概是这个样子吧
    class message{
       controller c = controller实例
    }class client{
     controller c = controller实例 private doSth(param){
      //更新组件内容状态等状态
     }
    }class controller{ client c = client实例
     message m = message实例
         
      private doSth(param){
          c.doSth();
      }
    }然后,message接收了一个消息,
    组织好param后(这步可以让controller做,也可以放在另外的util类里)
    调用c.doSth(param)
    这样,就完成了一次message传递给controller信息,controll调用client的方法处理的流程反向同理
    client调用(发给)controller一个方法(信息),然后controller调用m.XXX方法发送大概是这个意思吧,
    具体程序其实我也没写过good luck
      

  5.   

    抱歉,上面的“调用c.doSth(param)"和"这样,”之间,
    少写了一句:
    ”然后在controller的doSth方法再调用controller里面的c.doSth“做处理。也就是委托给定义在controller里的client实例干实事good luck
      

  6.   


    大概明白你的意思。。那我还不如把整个 client实例当参数传给 message 呢
    你这样的话,虽然结构清晰点,但操作性不太可行。而且client 要调动的东西比较多。
    也不可能都写成方法,有些是 组件的方法之类。来回调动很麻烦的。。
    不过还是谢谢你了。
    我直接把message 类 的 线程 直接放进  client 里去好了。这样图个方便
      

  7.   

    你应该在client事先写好几个模板,然后message传过来的,就是要调用的模板的编号之类的
      

  8.   


    大概明白你的意思。。那我还不如把整个 client实例当参数传给 message 呢
    你这样的话,虽然结构清晰点,但操作性不太可行。而且client 要调动的东西比较多。
    也不可能都写成方法,有些是 组件的方法之类。来回调动很麻烦的。。
    不过还是谢谢你了。
    我直接把message 类 的 线程 直接放进  client 里去好了。这样图个方便也行,
    不过我建议还是把message类当作工具类封装一下,
    放一个实例在client去操作。
    这样就等于client一手托两家,一家是界面控件,一家是消息处理
    (其实这样等于client也就是个controller的角色了,呵呵)good luck
      

  9.   

    最简单的方法:把界面类的控件做成public static,就可以直接调用了