Facade Design Pattern — StudySection Blog
The purpose of the facade design pattern is to provide a complex class with a more user-friendly interface. This reduces the amount of code that must be maintained and makes maintenance easier. This is a structural design pattern that hides the system’s complexity and gives the client a simple interface. This pattern uses a class named Facade, which provides clients with simpler methods while delegating its calls to existing classes’ methods.
Common uses include:
- Streamlining the Apex Web Service Proxy class’s execution
- Making custom Apex classes with complex interfaces easier to execute
- Providing a unified interface for several classes’ functions to be executed (example, multiple web service callouts)
This pattern successfully encapsulates one or more difficult classes, making the remainder of the application’s execution simpler. The facade class’s goal is to make it easier to execute one or more complex classes by providing a more user-friendly interface, thereby improving maintainability.
Why Facade?
The system may contain a large number of complex classes. Because of the various dependencies between its methods, calling them can be a time-consuming and repetitive procedure in many locations. Instead of repeatedly calling these methods from these classes, we develop a simple class called Facade that implements methods from these complex classes while providing a simple interface to the client.
Implementation of Facade Design Pattern -
To implement a facade class, simply build a new class that abstracts the complex class’s implementation. This facade class normally has a more user-friendly interface and, in some situations, orchestrates the execution of numerous complex classes.
The code sample below shows a facade class that calls numerous web services to arrange the establishment of an account and contact in an external system:
Shape Class — public interface Shape {
Rectangle Class -
void drawShape();
}public class Rectangle implements Shape {
Square Class -
public void drawShape() {
System.debug('Rectangle Shape::draw()');
}
}public class Square implements Shape {
Circle Class -
public void drawShape() {
System.debug('Square Shape::draw()');
}
}public class Circle implements Shape {
Facade Class -
public void drawShape() {
System.debug('Circle Shape::draw()');
}
}public class CreateShapeFacade {
Call to Facade Class (through Anonymous Window) -
private Shape circle;
private Shape rectangle;
private Shape square;
public CreateShapeFacade() {
circle = new Circle();
rectangle = new Rectangle();
square = new Square();
}
public void drawCircle(){
circle.drawShape();
}
public void drawRectangle(){
rectangle.drawShape();
}
public void drawSquare(){
square.drawShape();
}
}CreateShapeFacade createShape = new CreateShapeFacade();
createShape.drawCircle();
createShape.drawSquare();
createShape.drawRectangle();
Here, as you can see, the facade design pattern enhances Apex code maintainability by using a facade class to simplify the execution of one or more complex classes.
jQuery presents a tree-like structure of all the elements on a webpage simplifying the syntax and further manipulating such elements. The jQuery Certification exam by StudySection will secure your fundamental knowledge and a basic understanding of jQuery as an asset to improve your skills.
Originally published at https://studysection.com on February 22, 2022.