MVC 控制器与工厂方法
本文关键字:方法 工厂 控制器 MVC | 更新日期: 2023-09-27 18:35:08
我定制了 asp.net MVC项目,只为一个客户工作。
我需要扩展项目,以便根据需要与尽可能多的客户合作。
每个客户都可以决定是否打开或关闭某些功能(首次添加新客户时在数据库中定义)
我想知道最好的方法是什么:
1) 使用包含所需基本功能的基本控制器,并添加一个扩展基本控制器的新控制器(针对每个新客户)。
2) 仅使用一个控制器,并使用工厂方法模式构建每个客户(每个客户都有自己的具体类)。
3) 仅使用一个保存所有功能的控制器,并根据数据库交换机打开或关闭功能(首次添加新客户时在数据库中定义)
谢谢
所有这些方法都过于严格,在一定数量的新客户之后,您要么到处复制代码,要么处理一个客户不需要但另一个客户需要的代码。
您最好将每个客户的特定要求作为通用的、可重用的选项来实现。 例如,如果一个客户具有计费部分,请不要创建具有计费部分的 ThatCustomerController,而是添加计费角色,添加计费控制器,然后限制该角色对控制器的访问。
现在可能感觉像是更复杂的工作,但一年后你会感谢灵活性。
非常粗略的伪代码示例:
public class GeneralController : Controller
{
public ActionResult Index()
{
// Everyone can come here
}
}
[Authorize(Roles = "Billing")]
public class BillingController : Controller
{
public ActionResult Index()
{
// Only those with the 'billing' role can come here
}
}