具有MVC模式的观察者/可观察对象

Maz*_*zzy 1 java model-view-controller swing observer-pattern

我有这种情况:

一个可观察的对象,另一个是观察者的对象.

观察者有一个update(Observable obs,Object obj)接收通过notifyObservers对象接收的方法.当观察者收到通知时,update方法打印更改的对象.我想在实现MVC模式的gui中打印出结果.我遵循这个指南MVC模式.我的想法是成为Controller观察者.类似的东西:

public class Controller extends AbstractController implements Observer 
{
    public static final String TOTAL_HIT_COUNT_PROPERTY = "Total Hit";

    public void changeTotalHitCount(long new_total_hit_count)
    {
        setModelProperty(TOTAL_HIT_COUNT_PROPERTY, new_total_hit_count);
    }

    @Override
    public void update(Observable o, Object arg) 
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

但我不知道这是否是正确的实施!

TS-*_*TS- 7

Observer PatternMVC Pattern是两种截然不同的设计模式 - 只是为了确保我们在同一页面上.

在MVC(至少按定义)模式中,View应该在模型更改时自动更新,我猜这是你要做的.在这种情况下,这意味着你的Observer应该是View,而不是Controller,你的Model将是你的Observable对象.

从而:

Observable changes --> update Observer
Run Code Online (Sandbox Code Playgroud)

将复制你想要在纯MVC模式中获得的内容:

Model changes --> update View
Run Code Online (Sandbox Code Playgroud)

我不是说这应该是做事的方式,但我想如果你试图将Java的Observer/Observable应用于MVC模式,这可能会继续下去.

  • 因此,如果它非常简单,可能您根本不想应用MVC模式,只需执行Observable/Observer部分即可.有时设计模式实际上可能过度. (3认同)
  • 控制器位于中间位置,因此如果View中发生任何操作,则需要调用控制器.然后控制器决定做什么(例如,应用业务逻辑,做其他时髦的东西,也可能更新模型) (2认同)

Joe*_*gan 5

观察者模式是 MVC 的一部分。它是MVC的一个组成部分。

观察者模式也是熟悉的模型-视图-控制器 (MVC) 架构模式中的关键部分。来源:https : //en.wikipedia.org/wiki/Observer_pattern

MVC 模式可以看作是这三种设计模式的组合:观察者模式、复合模式和策略模式。这意味着 Observer 和 MVC兼容的。