【问题标题】:Repository Pattern, Observer Pattern - practical example [closed]存储库模式,观察者模式 - 实际示例 [关闭]
【发布时间】:2014-05-02 11:50:51
【问题描述】:

我正在努力成为一名更好的 C# 程序员并使用最佳实践设计模式。

有人能解释一下如何最好地使用存储库模式和观察者模式来处理下面的代码中的实际示例吗?

我有一个包含公司的系统。公司有部门和员工。此外,每家公司都支付订阅费用,这限制了他们可以创建的部门/员工的数量。一家公司不可能没有至少一个部门,而该部门应该有一名员工。

当我为公司创建存储库时 - 在“创建公司”代码中,我应该同时创建第一个部门和第一个员工,还是应该将存储库分开,或者最好只调用一次“创建公司”就可以了?

在“创建部门”代码中 - 我想确保公司不能创建更多他们已经支付费用的部门。我猜这里正确的是观察者模式——通知“订阅”代码公司正在尝试创建一个新部门,然后如果超过限制就停止它——但我没有任何线索从哪里开始!

非常感谢所有帮助。

【问题讨论】:

  • 这个问题在这里是题外话,但你可以查看程序员.stackexchange.com 的帮助中心和/或元数据,看看那里是否欢迎这个问题。
  • 同意@Maarten。虽然您可以使用观察者来有效地使检查异步,但您已经证明没有理由这样做,因此很难证明额外的复杂性与 if (LicenceCheck.CanAddCompany(CustomerID) ...

标签: c# design-patterns repository-pattern observer-pattern


【解决方案1】:

您正在尝试使用观察者模式来实现业务验证。恕我直言,这是错误的做法。

由于观察者模式是关于对象被通知某些事件,并且这些对象正在实现某些行为,因此它不匹配包含由存储库模式持久化的数据的业务对象。

您所描述的是对业务对象的简单验证。您正在尝试确保您的数据仅在通过某些检查时才被保留。在您的存储库中(或者在您的域/业务层中的某个位置,如果有的话)获取您的数据,对其进行验证并持久化。

【讨论】:

    猜你喜欢
    • 2012-12-01
    • 2013-03-11
    • 2011-12-21
    • 1970-01-01
    • 2011-07-31
    • 2010-12-31
    • 1970-01-01
    相关资源
    最近更新 更多