这个问题可能更多的是“什么在哪里”,但我认为这是一个重要的问题,关于SRP(单一责任原则),DRY(不要重复自己),并保持简洁,“敏捷” – 我没有足够的经验(用这种模式和一般设计)来了解这个.
在一个项目中,我们有一个NutritionController.随着时间的推移,它已经成长为包括这些动作(许多与他们各自的GET,POST和DELETE方法):
06000
然后我们有一个ExerciseController,它将包含许多类似的操作,例如搜索和收藏夹操作.这些是否应该重构到自己的控制器中,这样就是这样?
SearchController { SearchExercise SearchNutrition //... etc } FavoritesController { ViewNutritionFavorites AddToNutritionFavorites AddToExerciseFavorites EditNutritionFavorites EditExerciseFavorites //... etc }
在我看来,如果你把它们分成不同的控制器,你将会在某种程度上增加一个令人难以置信的大型依赖,来处理你需要的信息.或者你将有一个完全通用的处理应用程序,这将非常难以处理,因为你将不得不跳过这么多的圈,以获得你想要的效果(在M,V或C级别).
我在想这个错误的方式?例如,我应该有一个通用的“收藏夹”对象,然后让控制器决定要将其抛出的视图?
*对不起拼写出首字母缩略词 – 我正在这样做,以防其他人遇到这个问题,这些东西是无知的
编辑:
我所执行的所有逻辑在服务层中几乎处理得很好.例如,控制器将向服务发送“新”FoodItem.如果它已经存在,或者它有一个错误,那么服务将会使其回到控制器.
解决方法
HomeController的
>索引
FoodItemController
> ViewFoodItem
> AddFoodItem
> EditFoodItem
> DeleteFoodItem
> SearchFoodItem
NutritionController
> ViewNutritionSummary
FavoritesController
> AddToFavorites
> RemoveFromFavorites
> ViewFavorites
>搜索收藏
Django的MVC方法是将责任分为“应用程序”,每个应用程序都有自己的型号,控制器,甚至必要的模板.您最喜欢的应用是食品应用,营养应用,搜索应用和收藏应用.
编辑:OP提到搜索对每个控制器更具体,所以我做了这些动作.然而,搜索也可能只是一般的全局事物,所以在这些情况下,SearchController会很好.