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

时间:2018-05-10 12:48:01

标签: c# design-patterns

首先,抱歉找不到好的头衔:(

问题
所以,让我们说我们有一个对象,我们可以应用不同的操作来操纵该对象,我想在数据库中保留它。

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

enum ActionType { Stretch, Shrink }

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

{{1}}

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

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

我试图找到一种可以避免这种情况的设计模式。有没有?

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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

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