java对象消息传递_java-MVC中的类之间传递消息的正确方法是什...

What is the correct of way of passing messages between 3 classes MVC message passsing Image How to extend it for multiple controllers and views?I have read SO answers The MVC pattern and SWING saying this implementation is not efficient?

这取决于需求,就我个人而言,我为每个级别定义合同/接口并提供对每个子级别的引用.也就是说,模型和控制器具有各自必须满足的约定,视图和控制器具有各自必须满足的约定才能促进通信.

这允许一对一的通信管道,它也使每一层分离开来,因为它们不在乎如何实现另一层.

同样,您可以使用某种Observer Pattern,它允许感兴趣的各方将自己注册到一个对象,以便他们可以在发生某些更改时进行通知.通常,这会将可观察对象之外的单向通信传递给许多观察者.

And whether it is right to make Controller ActionListener and PropertyChangeListener?

就个人而言,控制器应尽可能少地了解UI的物理实现方式.如果您的查看器合同提供了ActionListener和/或PropertyChangeListener支持,那没关系,但是如果您依赖基础实现对象,那可能不是一个好主意(IMHO)-它会增加耦合.

Will it make GUI sluggish when I call updatedb() inside actionperformed()?

您在GUI主线程(例如,Swing中的事件调度线程)的上下文中执行的任何操作都将阻止UI响应其事件队列中的新事件.阻止GUI主线程运行的时间越长,您的UI响应就越慢.简短的答案,不要长时间运行或阻塞进程来阻塞GUI的主线程…

I also read about View having reference of Controller which maps gui actions to model actions. Is this way more efficient?

一般来说,视图和模型实际上不应相互对话,它们应该通过控制器进行通信.视图和控制器需要彼此了解,而模型和控制器则需要彼此了解.

知识量将取决于合同的要求,例如,如果您使用Observer Pattern,则可观察对象将不需要了解有关观察者的任何信息(除此之外,他们具有可以使用的一种或多种方法的事实)呼叫)

Which part of code should be inside EventQueue.invokeLater? Is it right to put init() function outside run()?Or Should I wrap the whole gui class inside run?

任何创建或修改UI或UI组件的代码都必须在GUI主线程的上下文中运行.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值