【发布时间】:2009-11-12 17:05:05
【问题描述】:
我有一个构建在遗留系统之上的复杂域模型,我已经为其构建了大部分“get”方法 - 通常只是通过传递数据库主键 ID。很容易。我现在很好奇如何处理在数据库中创建新对象并用新数据保存现有对象的任务,并希望确保我涵盖了所有基础。
整个项目中对应于数据库中实体的主要领域对象编号在 20-25 左右。大约需要保存 10 个左右(其余的只是用于支持数据,不需要用户更新)。要保存的对象具有复杂的依赖关系 - 对象 A 有一个对象 B 的列表,其中包含对象 C、D 和 E,例如,当原始对象 A 存在时,所有这些对象都可能需要保存。
我想构建它以便 UI 开发人员易于使用,但也强制只保存有效数据(假设对象 B 可能无法保存,除非对象 C 处于有效状态)。这让我不敢让他们从头开始创建一个对象并尝试保存它——我想遵循对象只能在有效状态下存活的原则。
另一种选择是在处理它们的服务对象上公开“CreateNew”和“Save”方法,但是这些方法的参数列表会很糟糕。
我正在考虑要求“CreateNew”和“Save”接受他们可以创建和传递的命令对象之类的东西,以便他们确切地知道需要哪些数据以及他们无法控制哪些数据。我阅读了command pattern,但我不需要它提供的任何主要福利。
在决定方法时我应该考虑哪些因素?这是 C#3.5,如果有的话。
【问题讨论】:
标签: oop