This page was exported from - TechnicalStack Export date: Sat Oct 2 0:32:28 2021 / +0000 GMT

Facade Pattern

The facade pattern (or façade pattern) is a commonly used with object-oriented programming. The name is by analogy to an architectural facade. What is Facade Design Pattern ?

A facade is an object that provides a simplified interface to a larger body of code, such as a class library. According to GoF Facade design pattern is: Provide a unified interface to a set of interfaces in a subsystem. Facade Pattern defines a higher-level interface that makes the subsystem easier to use. Advantages:

- A facade can make a software library easier to use, understand and test, since the facade has convenient methods for common tasks. - make the library more readable, for the same reason. - reduce dependencies of outside code on the inner workings of a library, since most code uses the facade, thus allowing more flexibility in developing the system - wrap a poorly designed collection of with a single well-designed API.

The Facade design pattern is often used when a system is very complex or difficult to understand because the system has a large number of interdependent classes or its source code is unavailable. This pattern hides the complexities of the larger system and provides a simpler interface to the client. It typically involves a single wrapper class which contains a set of members required by client. These members access the system on behalf of the facade client and hide the implementation details. When to use Facade Design Pattern ?

The facade pattern is typically used when:

- a simple interface is required to access a complex system; - the abstractions and implementations of a subsystem are tightly coupled; - need an entry point to each level of layered software; or a system is very complex or difficult to understand. Implementation :

Inventory.java

Output as PDF file has been powered by [ Universal Post Manager ] plugin from www.ProfProjects.com | Page 1/2 | This page was exported from - TechnicalStack Export date: Sat Oct 2 0:32:28 2021 / +0000 GMT

public class Inventory { public String checkInventory(String OrderId) { return 'Inventory check completed'; } } Payment.java public class Payment { public String deductPayment(String OrderID) { return 'Payment deduction completed';

} } OrderFacade.java public class OrderFacade { private Payment payment = new Payment(); private Inventory inventry = new Inventory();

public void placeOrder(String orderId) { String step1 = inventry.checkInventory(orderId); String step2 = payment.deductPayment(orderId); System.out.println("Step 1 and step 2 completed"); } } Client.java public class Client { public static void main(String args[]){ OrderFacade orderFacade = new OrderFacade(); orderFacade.placeOrder('Order123'); System.out.println('Order processing completed successfully'); } } Drawbacks/Consequences:

- In Facade design pattern the subsystnem methods are connected to the Façade layer. In future development if structure of the subsystem changes then it will require subsequent change to the Façade layer and client methods.

Reference :https://en.wikipedia.org/wiki/Facade_pattern

Output as PDF file has been powered by [ Universal Post Manager ] plugin from www.ProfProjects.com | Page 2/2 |