MVC控制器VS工厂方法

时间:2014-12-22 11:34:15

标签: c# asp.net-mvc asp.net-mvc-4 design-patterns factory-pattern

我将asp.net MVC项目定制为仅为一位客户工作。

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

每个客户都可以决定是打开还是关闭某些功能 (在第一次添加新客户时在DB中定义)

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

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

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

3)只使用一个控制器来保存所有功能并打开或关闭功能,具体取决于数据库交换机(在第一次添加新客户时在DB中定义)

感谢

1 个答案:

答案 0 :(得分:4)

所有这些方法都过于严格,在一定数量的新客户之后,您将要么在整个地方复制代码,要么解决一个客户不需要的代码,而是为另一个客户执行代码。

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