【发布时间】:2011-09-16 18:16:07
【问题描述】:
使用提供者模式创建了一组相关的提供者。由于给我的新要求,现在想增强我的提供者。这些提供程序是为与我们的 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)。
谢谢, 免打扰
【问题讨论】:
-
多个抽象类不一定是个坏主意,但需要考虑的可能是组合优于继承范式。 en.wikipedia.org/wiki/Composition_over_inheritance
-
如果您将来需要非 XML 网页提供程序,例如 JSON,该怎么办?在这种情况下,在 XMLBaseProvider 中声明的某些特定于 xml 的属性和方法变得多余。我会这样做:WebPageBaseProvider 作为 ProviderBase 的抽象子类,然后 XmlWebPageBaseProvider 作为 WebPageBaseProvider 的子类。
标签: c# oop design-patterns