我正在努力成为一名更好的C#程序员并使用最佳实践设计模式。
有人可以使用存储库模式和观察者模式解释如何最好地在代码中使用以下真实示例吗?
我有一个包含公司的系统。公司有部门和员工。此外,每家公司都支付订阅费用,这限制了他们可以创建的部门/员工数量。你不能拥有一个没有至少一个部门的公司,那个部门应该有一名员工。
当我为公司创建存储库时 - 在“创建公司”代码中,我是否还要创建第一个部门和第一个员工,或者我应该将存储库分开,还是最好只需要一个简单的单个调用创造这一切的“创建公司”?
在“创建部门”代码中 - 我希望确保公司无法创建更多已支付的部门。我猜这里正确的是观察者模式 - 通知“订阅”代码,该公司正在尝试创建一个新的部门,然后如果它超出限制就停止它 - 但我还没有线索从哪里开始!
非常感谢所有人的帮助。
答案 0 :(得分:2)
您正尝试使用观察者模式实施业务验证。这是错误的做法恕我直言。
由于观察者模式是关于被通知某些事件的对象,并且这些对象正在实现某些行为,因此它与包含存储库模式持久存储的数据的业务对象不匹配。
您所描述的是对业务对象的简单验证。您正在尝试确保在传递某些检查时仅保留您的数据。在您的存储库(或域/业务层中的某个位置,如果有的话)中获取数据,验证并保留数据。