设计模式以支持现有应用程序中的其他供应商

本文关键字:其他 供应商 应用程序 支持 设计模式 | 更新日期: 2023-09-27 18:21:58

我们有一个使用C#构建的应用程序,用于发送通知。对于发送通知,我们使用第三方SOAP服务。现在,我们必须添加对新的第三部分api的支持,它提供了发送通知的相同功能。

现有的C#应用程序使用了简单的OOP概念。由于现在我们必须修改应用程序以支持新的供应商,我正在考虑使用/应用一些设计模式(如果可用),以便我们在未来可以轻松地支持其他供应商。

有没有人面临过这个问题,或者知道哪种设计模式可以解决这个问题。

如有任何帮助/建议,我们将不胜感激。

谢谢,Rahul

设计模式以支持现有应用程序中的其他供应商

您将使用一个提供发送消息所需功能的Facade。您的应用程序只能使用Facade,而不能直接使用供应商的SOAP服务。

为每个供应商创建一个使用该供应商的SOAP服务的Facade实现。这个实现可以生活在一个新的程序集中,将您的应用程序与供应商的SOAP服务完全解耦。您现在甚至可以支持其他不基于SOAP的机制。

听起来您想要的是适配器模式。

适配器模式是在内部系统和从中获取数据的地方之间设置一个层。这个层所做的只是将数据从它们的格式转换为您的格式。

这意味着,如果您有多个数据源,您可以将它们全部转换为一种可接受的格式,并将它们传递到您的系统中,如果它们端的数据格式发生更改,您只需要更新适配器,而不需要更新较低级别的代码。

编辑:丹尼尔是对的,一个门面更合适。像我所描述的适配器更多的是关于在源之间发送数据。facade以类似的方式位于源之间并转换方法,而不是在我的解决方案中转换数据。