官术网_书友最值得收藏!

  • Spring 5 Design Patterns
  • Dinesh Rajput
  • 286字
  • 2021-07-08 09:59:39

Knowing when to use the Facade Pattern

Suppose you are designing a system, and this system has a very large number of independent classes and also has a set of services to be implemented. This system is going to be very complex, so the Facade pattern comes into the picture and reduces the complexities of the larger system and simplifies interactions of the client code with a set of classes from a subsystem of the large complex system.

Suppose you want to develop a bank enterprise application with a large number of services to perform a task, for example, AccountService for getting the Account by accountId, PaymentService for payment gateway services, and TransferService for the amount transfer from one account to another account. A client code of the application interacts with all these services to transfer money from one account to another account. This is how different clients interact with the amount transfer process of the bank system. As shown in the following figure, here you can see client code that directly interacts with the subsystem classes and client also should aware about the internal working of subsystem classes, so it is simply a violation of the SOLID design principles because client code is tightly coupled with the classes of subsystem of your banking application:

Banking Application Subsystem without Facade Design Pattern

Rather than client code directly interacting with the classes of a subsystem, you could introduce one more interface, which makes the subsystems easier to use, as shown in the following figure. This interface is known as a Facade interface, it is based on the Facade pattern, and it is a simple way to interact with the subsystems:

Banking Application Subsystem with Facade design pattern
主站蜘蛛池模板: 奉贤区| 盈江县| 姚安县| 明溪县| 浮梁县| 广饶县| 崇仁县| 衡南县| 若尔盖县| 新余市| 哈尔滨市| 红桥区| 资阳市| 荆州市| 东阿县| 房产| 德格县| 龙井市| 探索| 诸暨市| 息烽县| 苏尼特右旗| 临海市| 延川县| 石台县| 红河县| 常山县| 通化市| 上蔡县| 龙陵县| 襄城县| 正安县| 神木县| 务川| 孟连| 土默特右旗| 汉源县| 论坛| 磐石市| 吕梁市| 华池县|