使用提供者模式 - 多个抽象类

时间:2011-09-16 18:16:08

标签: c# oop design-patterns

使用提供者模式创建一组相关提供者。现在,由于给我的新要求,我想提高我的供应商。这些提供程序是为一群与我们的Web服务集成的客户创建的。现在,一些相同的客户希望使用网页与我们集成。通过我们的网页,前端逻辑当然会有所不同,但提供者逻辑的一半是相同的。所以我想在特定客户提供商中添加另一个抽象类来处理与提供商的网页集成。这是使用可能的增强功能的代码:

//Same Customer provider dll      
//Methods defined for handling web service integration
public abstract class XMLBaseProvider : ProviderBase


//Methods defined for handling web page integration logic
public abstract class XMLWebPageBaseProvider : XMLBaseProvider

现在在app.config中我定义了另一个指向XMLWebPageBaseProvider的提供者部分以及一个新的提供者名称。这是有效的,但我想知道我滥用提供者模式这样编码吗?这样做是否有任何我担心或陷入困境的问题。这里有人像我上面描述的那样实现了这个提供者模式吗?

另请注意,我们可能会有更多客户使用网页集成与我们集成。我不愿意不断向解决方案中添加越来越多的提供商(dll)。

谢谢, DND

1 个答案:

答案 0 :(得分:1)

我认为你的想法很好。对于你所描述的,你的设计将正常工作。正如评论员之一所指出的那样,这些要求可能会扩展为JSON。根据我的经验,对总是的不同格式的需求会随着时间的推移而增长。当发生这种情况时,继承变得非常脆弱。类层次结构将增长到越来越多的抽象类级别。最后,它很难管理。

评论员建议使用作文,我同意。从长远来看,策略或访客模式可能会为您提供更好的服务。

如果应用程序对业务至关重要且业务正在增长,请考虑更进一步。将尽可能多的提供程序逻辑从代码中移出到配置文件或配置数据库中。从长远来看,这将是一个巨大的胜利,因为它最大限度地减少了需求增长时必须更改的代码量。更改代码风险,创建错误,强制执行新的构建和部署等。更改某些数据更容易,风险更低。

此策略通常称为数据驱动编程。看看this question