这个有对应的设计模式吗?

7
我有一个组件,需要根据输入调用特定的服务。因此,我的组件必须查看输入,根据配置来决定“对于这个输入调用这个数据的服务”。服务具有公共签名方法和特定的签名方法(每个服务都不同)。
我考虑使用一个抽象类,包括所有三种方法的签名。两个服务的实现将覆盖所有三种方法(对于当前服务不支持的方法,将抛出“NotImplementedException”)。还将定义一个组件,可以使用映射初始化该组件(对于每种输入类型,将指定要调用的服务类型)。
您对解决这种情况有更好的方法吗?
3个回答

6

工厂模式 的定义如下:

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

听起来像是您需要的,对吗?


1
我考虑过工厂 DP(设计模式),但在这种情况下,它必须与其他一些模式结合起来,以便“可配置”。我正在寻求现有的方法。 - ytrewq
此外,这可能与单例模式或对象池模式相关联。 - ytrewq
外观模式或适配器模式可能是值得考虑的,我认为它们可以允许一些配置。 - JB King

0

微软公司将此称为提供程序模型设计模式。虽然由于您的方法未实现所有方法,因此可能并不完全适合。

最基本的模式是:

  • 定义契约的抽象基类。抽象基类具有实现其支持的公共API所需的所有抽象方法和属性。

  • 配置信息。创建功能提供程序类的实现后,必须在配置部分中进行描述。提供程序在配置中的描述提供了所有信息,以便可以在运行中的应用程序中实例化该提供程序。

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


0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接