Dan*_*iel 7 asp.net-mvc design-patterns
我正在学习MVC并且在决定何时应该创建新控制器而不是仅添加与现有控制器关联的操作和视图时遇到问题.一方面,单一责任似乎表示控制器应限于少数几个动作.但是,当我尝试这个时,类的数量呈指数级增长(每个类型的模型,视图和控制器) - 我想知道我是否会过火.
例如,默认AccountController具有Login,ChangePassword和Register操作.我倾向于创建一个LoginController,PasswordController和ProfileController,以及相关的模型类.那么有1个班级,那里会有3-6个班级.
这有什么好的经验法则吗?
Sov*_*iut 10
您应该为您正在操作的每种模型类型专门设置一个控制器.控制器充当对这些模型起作用的动作集合.这通常是经验法则,但有时控制器的范围超越了单一模型.
AccountController处理与身份验证相关的所有事情.这是一个超越单个模型范围的示例,通常包含身份验证.身份验证的关键部分是什么?检索用户,更改密码等
我认为你需要务实.我正在开发一个由StatsController组成的项目.行动的数量不断增长(RandomStat,MostPopular,MostViewed,MostVoted等等),这个列表不断增加.这些操作很容易满足,因为StatsController的依赖关系不会改变.我正在使用IoC来满足我的控制器需要的功能,当我开始看到我的控制器需要引用新对象时,这是一个需要拆分的信号.
如果您的LoginController,PasswordController和ProfileController都依赖于相同的对象,为什么要将它们分开呢?