我无法决定哪种模式最适合以下问题。
我有一个客户端系统需要与一个独立的子系统进行交互。由于子系统非常复杂,因此我需要在两者之间使用接口来简化客户端系统。这听起来像是外观模式的完美适用场景,但我认为适配器模式也适合我的问题。
如果中间的接口通过简单的API调用调用子系统中的各个任务,是否会有任何区别?
我无法决定哪种模式最适合以下问题。
我有一个客户端系统需要与一个独立的子系统进行交互。由于子系统非常复杂,因此我需要在两者之间使用接口来简化客户端系统。这听起来像是外观模式的完美适用场景,但我认为适配器模式也适合我的问题。
如果中间的接口通过简单的API调用调用子系统中的各个任务,是否会有任何区别?
根据您的描述,这更符合Facade的接受定义,但我认为这更多是一个语义上的辩论。总体而言,Facade更多地减少了与整个子系统进行接口交互的复杂性,而适配器更加适用于调整现有接口或调用以满足您的特定需求(例如基本功能已经存在,但返回类型不完全是您想要的等)。
Facade模式(提供对更大代码体系的简化接口的对象)适用于您的用例。
使用Facade的检查清单:(来自链接的维基百科文章)
有关Facade的更多详细信息,请参阅相关SE问题。
尽管Facade和Adapter都是结构模式,但意图不同(samitgaur的答案很好地解释了意图部分)。
由于您不需要将一个接口转换为另一个接口,因此Adapter无法满足您的目的。
相关SE问题:
Facade和Adapter的区别主要在于意图。
如果你想简化接口,那么你需要使用Facade。如果你想适配接口以便将其用作其他东西,那么就需要使用Adapter。
但实际上,如何称呼它并不是问题所在。我的经验法则是,如果你正在实现一个现有的接口,那么你可能正在使用Adapter接口。如果你正在创建一个新的简化接口,那么就是Facade。
外观模式处理接口而非实现。其目的是将内部复杂性隐藏在一个外观简单的单一接口后面。