存储库模式,观察者模式-实际示例

本文关键字:观察者模式 模式 存储 | 更新日期: 2023-09-27 18:01:14

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

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

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

当我为公司创建存储库时——在"创建公司"代码中,我应该同时创建第一个部门和第一个员工吗,还是应该将存储库分开,或者最好只调用一个简单的"创建公司(create company("就可以了?

在"创建部门"代码中,我想确保公司不能创建更多他们已经付费的部门。我猜这里的观察者模式是正确的——通知"订阅"代码公司正试图创建一个新部门,如果超过限制,就停止它——但我不知道从哪里开始!

非常感谢大家的帮助。

存储库模式,观察者模式-实际示例

您正试图通过使用observer模式来实现业务验证。IMHO的做法是错误的。

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

您所描述的是业务对象的简单验证。您正试图确保只有在通过某些检查时,您的数据才会被持久化。在您的存储库中(或者在您的域/业务层中的某个地方,如果您有(获取您的数据,验证它,并将其持久化。