首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在每个区域设置多个区域,控制器继承于基本控制器- MVC。

在每个区域设置多个区域,控制器继承于基本控制器- MVC。
EN

Stack Overflow用户
提问于 2011-06-19 04:01:06
回答 1查看 1K关注 0票数 0

我目前正在一个半大型的MVC 2项目上工作,我们拥有的带有相关视图和视图模型的控制器数量正在变得相当大。为了尝试提供一些分离,我一直在研究如何使用MVC 2的区域特性,并相应地重构项目。

我面临的问题之一是,我们对控制器具有继承等级,以便共享在具体控制器中使用的功能和属性,然后公开我们希望处理的必要操作。

实际上,我们目前在主控制器文件夹中有一个类似这样的设置:

代码语言:javascript
复制
Controller (MVC)
+-- BaseController (Abstract)
      +-- BaseWorkController (Abstract)
          +-- BaseWorkAController (Abstract)
              +-- ... a number of controllers exposing actions
          +-- BaseWorkBControllers (Abstract)
              +-- ... a number of controllers exposing actions

我正在考虑为每个工作控制器创建区域。

  • Area/WorkA
  • Area/WorkB

每个区域都有其相关的视图和视图模型,甚至模型。

然而,我似乎面临的问题是如何放置BaseWorkController。是否可以将其保留在主控制器文件夹中,而区域控制器只包含对该控制器的引用。此外,不同区域的代码可能需要访问不同的模型,甚至需要为某些功能创建一些属性。

这个设置是否看起来是一个可以接受的使用区域。从我所读到的内容来看,区域似乎有助于分离关注点和功能,这正是我所要寻找的。但是,如果这是对功能的完全错误的使用,我不想对此进行投资?

控制器代码使用其他区域或主核心控制器/模型/视图文件夹的功能是否可以接受。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-19 04:37:49

应用程序中的继承量对我是一个警告。如果您有如此多的共享行为,我认为您应该考虑将其从控制器本身中提取出来,创建一些封装共享逻辑的类,然后您可以通过组合而不是继承来扩展控制器的功能。

要回答您的问题,从基本控制器到其他领域的控制器共享逻辑不存在任何问题。如果这样做有意义的话。但是,如果您开始在继承链中得到几个层,我将强烈考虑检查代码,并查看共享逻辑在不同的共享类中是否有意义,而不是使用多个重写使事情复杂化。

如果您在不同级别上重写行为,您可能需要查看策略模式。您可以使用该模式来交换组件的行为并使用组合,而不是继承。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6400449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档