多租户和代码重复 - 如何通过“组合”逻辑来避免条件重载

时间:2016-11-09 03:16:52

标签: c# asp.net architecture multi-tenant

我有一个多租户应用程序,租户很少,每个租户需要一些小的定制。

我发现很多代码库都包含如下逻辑:

public async Task<Banana> PeelBanana(Banana banana)
    {
        if (_tenant == Tenant.A){
           NotifyMonkey();
        } else if (_tenant == Tenant.B){
           GetCoconut();
        }
        banana.FinishPeeling();
        return banana;
    }

是否有某种模式可以解决这种情况,我需要根据某些标准撰写我的逻辑?

1 个答案:

答案 0 :(得分:1)

根据其他代码的组织,您可以使用以下内容:

public async Task<Banana> PeelBanana(Banana banana)
{
    _tenant.OnPeelBanana(banana);
    banana.FinishPeeling();
    return banana;
}

并使用Tenant类的不同子类型。但当然这取决于像NotifyMonkey这样的函数可以移动到那里或可以从那里访问。