用于存储类/函数调用的设计模式



首先,抱歉找不到一个好的标题:(

问题
因此,假设我们有一个对象,我们可以应用不同的操作来操作该对象,我想将其保留在数据库中。

例如,我们可以定义以下类。

interface IAction{ object transform(object input); }
class Stretch : IAction {  }
class Shrink : IAction {}

一个对象可以有一个 IAction 列表。此外,每个操作都可以具有我们定义的类型。

enum ActionType { Stretch, Shrink }

当我们从数据库中检索操作时,我们需要执行逻辑来检查操作的类型,以了解要创建哪个类。

如果我只是更改枚举中项目的顺序,那么没有什么可以告诉我我的数据库也必须更改,这可能会引入重大更改。

我正在尝试找到一种可以避免这种情况的设计模式。有吗?

就个人而言,我不明白所描述的问题。通常,我不会存储/注册对对象本身的操作或更改,而只是让对象保持其当前状态。

当我想存储/注册操作或创建撤消/重做缓冲区时,我会设置日志记录或审核机制。但是我会将其设计为与基本的存储/建模结构完全分开,因为我不想在应用程序中引入如此紧密的功能耦合。

与所有问题一样,可能有许多可能的解决方案。为您的问题提供开箱即用的解决方案是相当困难的。

您可能需要研究更传统的解决方案,例如在应用程序中实现日志记录机制、审核机制和/或撤消/重做缓冲区。

选择最佳策略取决于比此处描述的更多的因素,并且应基于应用程序的整体设计和体系结构(以及应满足的质量要求(。

顺便说一句:根据我的经验,未来肯定会带来(意想不到的(更改请求,这些请求会破坏您当前的代码逻辑和/或数据结构。因此,在考虑所有必需的规范时,保持应用程序中的所有内容尽可能简单和优雅非常重要。这将使代码更易于维护,并且还可以简化未来的代码和数据迁移。

最新更新