【问题标题】:Is there a design pattern for this?这有设计模式吗?
【发布时间】:2010-05-03 17:47:54
【问题描述】:

我有一个组件需要根据接收到的输入调用特定服务。因此,我的组件必须查看输入,并基于“对于此输入调用此数据与此服务”的配置需要调用正确的服务。这些服务有一个共同的签名方法和一个特定的(每个)。

我想到了一个包含所有三个方法的签名的抽象类。这两个服务的实现将覆盖所有三个方法(对于当前服务不支持的方法,抛出NotImplementedException)。还将定义一个可以用映射初始化的组件(每个输入类型都将具有要调用的服务的类型)。

您有更好的方法来应对这种情况吗?

【问题讨论】:

    标签: c# design-patterns factory


    【解决方案1】:

    Factory pattern 有这样的定义:

    定义一个接口来创建一个 对象,但让子类决定 要实例化哪个类。工厂 方法让一个类推迟 实例化到子类

    听起来像你想要的,对吧?

    【讨论】:

    • 我认为(已标记)工厂 DP,但在这种情况下,它必须与其他一些模式相结合,才能“可配置”。我正在以这种方式要求现有的方法。
    • 另外,这可能与单例或对象池模式有关
    • 外观或适配器模式可能值得考虑允许一些我认为的配置。
    【解决方案2】:

    微软将此称为Provider Model Design Pattern。尽管由于您的方法没有实现所有方法,因此它可能不太适合。

    At its most basic level the pattern is:

    • 定义一个抽象基类 合同。抽象基类有 所有的抽象方法和 实现所需的属性 它支持的公共 API。

    • 配置信息。一旦一个 特征提供者的实现 类被创建,它必须被描述 在配置部分。配置中提供程序的描述提供了所有信息,以便可以在运行的应用程序中实例化提供程序。

    抽象基类通常应该支持工厂方法来创建新对象。

    【讨论】:

      【解决方案3】:

      策略设计模式非常适合您的问题。 策略封装了一种算法,需要根据您作为输入的数据类型执行该算法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多