【发布时间】:2009-05-11 19:14:42
【问题描述】:
我刚刚从演示者类重构了一个新的域类,但我不知道在哪里实例化它。
这是对维护不善的遗留项目进行的更大的持续重构工作的一部分。
Presenter 当前正在由视图的 OnLoad 事件创建,并且视图在构造函数中作为参数传递。 Presenter 中的所有公共方法都是无参数的并且返回 void。它们使用视图的公共属性与视图通信。
视图,本质上是一种简陋的形式,完全取决于演示者。
这是典型的被动视图模式,我想继续坚持下去。这使我陷入困境。我需要为演示者创建一个新域对象的实例以供使用。
- 如果我通过构造函数传递它,那么视图必须创建它并获得不必要的依赖。
- 如果我在演示器中的任何位置创建它,我无法在单元测试中将其替换为模拟对象。
- 如果我将它设为演示者的公共属性,那么我会在使用它的演示者方法上引入创建顺序依赖项,但我仍然没有解决哪个外部类负责创建它。
我目前没有使用任何依赖注入框架。虽然我有兴趣在未来使用它,但源代码仍然很脆弱,无法在其中引入第三方框架。
我愿意接受任何建议。
【问题讨论】:
标签: c# refactoring dependency-injection mvp