在哪种情况下,您将选择立面模式和DI



请说出立面模式和di的实时场景。我可以用立面模式替换DI吗?

外观模式用于简化(潜在的)复杂子系统的相互作用。

一个现实世界的例子可能就像银行系统中的付款方式一样。

在此示例中,作为开发人员,您想要一个可以调用付款的简单接口 - 即,您只给它一个要付款的帐号,并付款给付款,并提供付款金额,然后付款。但是,幕后发生的实际过程要复杂得多,并且涉及各种子系统和旧版组件。首先,它需要检查帐户是否有效,然后需要检查帐户余额是否足以支付付款,必须指示付款处理系统处理该付款等。

因此,处理付款的实际代码可能会如下:

accountService.validateAccountNumber(toAccount);
int balance = accountService.getBalance(fromAccount);
if (balance < paymentAmount) {
    raiseError("Insufficient funds");
}
paymentService.processPayment(fromAccount, toAccount, paymentAmount)

您拥有的第一个选项是在整个系统中复制此代码,并希望每个编写付款处理代码记忆的开发人员都会记住所有相关子系统。另外,您可以创建一个封装所有这些逻辑并隐藏其背后的复杂性的PaymayFacade,因此您只需在立面上调用单个方法来处理付款。

paymentFacade.processPayment(fromAccount, toAccount, paymentAmount);
另一方面,

依赖性反转与立面模式不同,您不能比较两者或用一个用作另一个替代品。

依赖性反转有助于解耦软件模块。但是,您可以在使用立面模式的代码中使用依赖关系反转。您可以将其责任委派给位于更高级别的某些东西 - 使用Spring之类的框架,您可以指定应用程序的配置中应使用哪个外墙的详细信息 - 因此您曾经决定切换到一种新的处理付款方式,您不必更改代码 - 它使用的特定立面实现只会与其他内容交换,而不会受到更改的影响。<<<<<<<<<<<<<<<</p>

最新更新