c# - 使用 C# 的存储库模式的通用业务层设计(如何)

标签 c# design-patterns

我正在使用带有 Web 应用程序的存储库设计(存储库(数据层)将模型(对象)暴露给业务层,然后业务层被数据层 (ui) 使用。对象或对象列表在各层之间传递这种类型的实现。

我发现我的业务层正在变成一系列管理器类型类,它们都具有通用的 GetAll、GetById、Save、Delete 类型方法。这对于许多非常小的简单对象来说非常常见。这是值得关注的领域或改进的机会(较小的业务经理类(class)系列)。我正在寻找避免整个系列的较小业务管理器类映射到仅获取/保存/删除对象的较小对象的选项。

除了 get/save/delete 类型的方法(这些管理器类都可以)之外,更接近于应用程序功能的更大的对象有许多方法。

我在想有一种设计模式或实现可以让我拥有一个驻留在业务层中的管理器类,它可以接受一个对象作为特定对象类型的参数,并分别接受 get/save/delete 方法知道要启动并将对象传递给它以进行操作的存储库对象的类型。

这里的好处是我可以有一个通用管理器类来将较小类型对象的保存/删除/获取传递给适当的存储库类,从而减少许多较小的管理器类。

关于如何实现这一点的想法? 谢谢

最佳答案

我不会那样做的。业务层类可以像转发到数据层的代码一样简单,编写它们确实很烦人,但它们的存在有几个原因:验证、安全、根据业务规则采取一些行动。

如果您尝试创建一个通用的业务层,则很难包含业务类可以做的所有各种事情。通用业务层将变得比您当前拥有的复杂得多。测试将更加困难。添加新的业务规则也很困难。

对不起,这不是你想看的,但我已经走了通用系统的路线,一直有很多遗憾。

关于c# - 使用 C# 的存储库模式的通用业务层设计(如何),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2348961/

相关文章:

c# - 使用 Async 避免重复代码

oop - 减少构造函数的参数数量

r - 在 R 数据框中查找整行?

c# - CheckedListBox 选择所有项目 - Windows 窗体 C#

c# - 获取 C# WinForms App 的应用程序图标

c# - 关于 C# 中的泛型和列表方法 Contains()

c# - 字典枚举关键性能

java - 在 View 中保留 Controller 的引用或使用监听器

java - 如何找到一个类的任何字段的变化值?

java - 根据类型检索随机值的方法