如何将SRP应用于用户界面类?

时间:2011-01-18 14:56:06

标签: c# winforms dependency-injection single-responsibility-principle

我的应用程序使用DI框架,并在必要时遵循“程序到界面”的做法。

我使用构造函数注入,因为我想明确地看到依赖项。但是现在我的表单类的构造函数需要太多参数(例如> = 4)。

问题:由于UI设计通常不遵循SRP,因此Winform类可能具有n构造函数依赖项。你喜欢保持原样,传递代理对象,使用服务定位器......?在没有使用aop框架的情况下,你也在每个构造函数中注入“方面”(记录器等)吗?

1 个答案:

答案 0 :(得分:4)

UI实施不应该遵循SRP。使用MVP,MVC或MVVM等模式,UI类“单一职责”是通过UI呈现和收集数据。这通常最好通过相当被动的数据结构来完成,例如View Models。

构造函数过度注入的问题应由refactoring to Aggregate Services解决。

方面最好通过application of the Decorator design pattern解决。