【发布时间】:2021-06-10 21:08:39
【问题描述】:
我有一些类的层次结构。我想从这个层次结构中实现任何实例的延迟更新。换句话说,我们应该在我们将使用对象的任何公共方法的唯一情况下更新对象。允许实现这种行为的最佳设计模式是什么?
以下是此类情况的一个简单示例:
我有一个复杂的模型,它无法更新视图(出于性能目的)。因此,视图应该在访问其任何公共方法期间自动更新自身。
【问题讨论】:
标签: oop design-patterns
我有一些类的层次结构。我想从这个层次结构中实现任何实例的延迟更新。换句话说,我们应该在我们将使用对象的任何公共方法的唯一情况下更新对象。允许实现这种行为的最佳设计模式是什么?
以下是此类情况的一个简单示例:
我有一个复杂的模型,它无法更新视图(出于性能目的)。因此,视图应该在访问其任何公共方法期间自动更新自身。
【问题讨论】:
标签: oop design-patterns
我将短语延迟更新解释为延迟加载。在这种情况下,听起来您在描述proxy pattern。代理是用来控制对另一个对象或资源的访问,而GoF book提到的第一个控制对一个对象的访问的原因是,
...推迟其全部成本 创建和初始化,直到我们真正需要使用它。
换句话说,您只能在实际调用其公共方法之一时更新对象。
【讨论】:
设计模式很少用于性能目的。相反,您打破模式以获得更好的性能。
使用 Observer 监听模型的变化。
要在调用方法时执行某些操作,请使用代理。
【讨论】:
使用代理设计模式。它控制对原始对象的访问,允许您在请求到达原始对象之前或之后执行。 有关更多信息,您可以参考下面的此链接 https://refactoring.guru/design-patterns/proxy
【讨论】:
Model-view-viewmodel (MVVM) 与 vz0 posted 相关。
在这种模式中,视图观察者视图模型,并相应地更新自身,允许您将 GUI 与数据表示分离。
【讨论】: