MVC 控制器与工厂方法

本文关键字:方法 工厂 控制器 MVC | 更新日期: 2023-09-27 18:35:08

我定制了 asp.net MVC项目,只为一个客户工作。

我需要扩展项目,以便根据需要与尽可能多的客户合作。

每个客户都可以决定是否打开或关闭某些功能(首次添加新客户时在数据库中定义)

我想知道最好的方法是什么:

1) 使用包含所需基本功能的基本控制器,并添加一个扩展基本控制器的新控制器(针对每个新客户)。

2) 仅使用一个控制器,并使用工厂方法模式构建每个客户(每个客户都有自己的具体类)。

3) 仅使用一个保存所有功能的控制器,并根据数据库交换机打开或关闭功能(首次添加新客户时在数据库中定义)

谢谢

MVC 控制器与工厂方法

所有这些方法都过于严格,在一定数量的新客户之后,您要么到处复制代码,要么处理一个客户不需要但另一个客户需要的代码。

您最好将每个客户的特定要求作为通用的、可重用的选项来实现。 例如,如果一个客户具有计费部分,请不要创建具有计费部分的 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
    }
}