【问题标题】:Which design pattern allows to perform deferred updating of an object?哪种设计模式允许执行对象的延迟更新?
【发布时间】:2021-06-10 21:08:39
【问题描述】:

我有一些类的层次结构。我想从这个层次结构中实现任何实例的延迟更新。换句话说,我们应该在我们将使用对象的任何公共方法的唯一情况下更新对象。允许实现这种行为的最佳设计模式是什么?

以下是此类情况的一个简单示例:

我有一个复杂的模型,它无法更新视图(出于性能目的)。因此,视图应该在访问其任何公共方法期间自动更新自身。

【问题讨论】:

    标签: oop design-patterns


    【解决方案1】:

    我将短语延迟更新解释为延迟加载。在这种情况下,听起来您在描述proxy pattern。代理是用来控制对另一个对象或资源的访问,而GoF book提到的第一个控制对一个对象的访问的原因是,

    ...推迟其全部成本 创建和初始化,直到我们真正需要使用它。

    换句话说,您只能在实际调用其公共方法之一时更新对象。

    【讨论】:

    • 是的,这正是我的意思
    【解决方案2】:

    设计模式很少用于性能目的。相反,您打破模式以获得更好的性能。

    使用 Observer 监听模型的变化。

    要在调用方法时执行某些操作,请使用代理。

    【讨论】:

      【解决方案3】:

      使用代理设计模式。它控制对原始对象的访问,允许您在请求到达原始对象之前或之后执行。 有关更多信息,您可以参考下面的此链接 https://refactoring.guru/design-patterns/proxy

      【讨论】:

        【解决方案4】:

        Model-view-viewmodel (MVVM)vz0 posted 相关。

        在这种模式中,视图观察者视图模型,并相应地更新自身,允许您将 GUI 与数据表示分离。

        【讨论】:

        • 但在我的情况下,模型无法通知视图其更改。这是我架构的弱点
        猜你喜欢
        • 2014-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-08
        • 1970-01-01
        • 1970-01-01
        • 2012-10-29
        相关资源
        最近更新 更多