【发布时间】:2019-04-23 21:45:09
【问题描述】:
此问题与桌面应用程序有关。
我一直在考虑的事情是一种能够访问可以被认为是全局的对象的方法,就像它被声明为静态一样。但我总是避免这样做。
例如,在应用程序中,用户对象(或类似的东西)经常出现。想象一下,在业务逻辑的某个地方使用了数据模型/存储库,您需要将用户 ID 作为参数传递给数据层,以便它可以为用户加载相应的数据。 大多数时候,在 Web 应用程序中,我看到诸如用户 ID 之类的信息来自 URL 参数或 HTTP 发布数据,并通过其操作方法发送到控制器。
在桌面应用程序中这是不同的,因为所有“状态”都保持不变。假设一个用户对象在程序启动时被构建一次,当然现在存储在内存中的某个地方。如何从应用程序的另一部分访问它?似乎只有两种选择:
- 在包含用户对象的通用类上使用静态方法,返回用户对象。
- 通过整个类树注入用户对象 需要对象。
我认为这两种选择都很丑陋且不是最佳选择。既然我认为这是一种非常普遍的情况,那么保持良好结构的最佳做法是什么?
【问题讨论】:
-
你能解释一下创建静态用户类是如何滥用静态方法的吗?
-
因为我认为模拟用户对象更难。
-
简短的回答是使用依赖注入(DI)和单例模式...有oodles的方法,以及大量为您完成艰苦工作的框架,祝您好运并快乐注入
标签: c# design-patterns data-structures architecture software-design