C# 如何将SRP应用于用户界面类?
我的应用程序使用DI框架,并在必要时遵循“程序到接口”的实践 我使用构造函数注入,因为我希望显式地查看依赖项。但是现在我的表单类的构造函数接受了太多的参数(>=4,例如)C# 如何将SRP应用于用户界面类?,c#,winforms,dependency-injection,single-responsibility-principle,C#,Winforms,Dependency Injection,Single Responsibility Principle,我的应用程序使用DI框架,并在必要时遵循“程序到接口”的实践 我使用构造函数注入,因为我希望显式地查看依赖项。但是现在我的表单类的构造函数接受了太多的参数(>=4,例如) 问题:由于UI设计通常不遵循SRP,Winform类可能具有n构造函数依赖关系。您想让它们保持原样吗,改为传递代理对象,使用服务定位器。。。?考虑到没有使用aop框架,您是否在每个构造函数中注入“方面”(记录器等)?UI实现没有理由不遵守SRP。使用MVP、MVC或MVVM等模式,UI类的单一职责是通过UI呈现和收集数据。这通
问题:由于UI设计通常不遵循SRP,Winform类可能具有
n
构造函数依赖关系。您想让它们保持原样吗,改为传递代理对象,使用服务定位器。。。?考虑到没有使用aop框架,您是否在每个构造函数中注入“方面”(记录器等)?UI实现没有理由不遵守SRP。使用MVP、MVC或MVVM等模式,UI类的单一职责是通过UI呈现和收集数据。这通常最好通过相当被动的数据结构(如视图模型)来实现
关于构造函数过度注入的问题应通过以下方式解决
方面最好通过解决。谢谢!两篇文章都很棒。不过,我想稍微打开“UI设计中的SRP”部分。您如何应对客户的非标准UI需求?例如,涉及多个职责的表单(根据您手头的设计)…我认为可能会使用复合视图,每个视图本身都使用SRP,或者可能会重新考虑职责的粒度(如在聚合服务中)。你会走哪条路?听起来很合理。每个问题都是一个较大问题集的一小部分。这基本上就是现在或多或少已经失效的复合应用程序块所走的道路。