Design patterns V - Facade Pattern
Facade Pattern provides a unique interface to a set of methods of different subsystems in an application. It’s widely used in application development.
It’s a structural design pattern.
Now let’s see the implementation in C#.
Firstly, create subsystems and their methods.
class SubSytemOne
{
public void MethodOne()
{
Console.WriteLine("SubSystemOne Method");
}
}
class SubSytemTwo
{
public void MethodTwo()
{
Console.WriteLine("SubSystemTwo Method");
}
}
class SubSytemThree
{
public void MethodThree()
{
Console.WriteLine("SubSystemThree Method");
}
}
class SubSytemFour
{
public void MethodFour()
{
Console.WriteLine("SubSystemThree Method");
}
}
Create Facade class and its methods as an interface to subsystems’ methods’ aggregation.
class Facade
{
private readonly SubSytemOne _one;
private readonly SubSytemTwo _two;
private readonly SubSytemThree _three;
private readonly SubSytemFour _four;
public Facade()
{
_one = new SubSytemOne();
_two = new SubSytemTwo();
_three = new SubSytemThree();
_four = new SubSytemFour();
}
public void MethodA()
{
Console.WriteLine("MethodA():");
_one.MethodOne();
_three.MethodThree();
}
public void MethodB()
{
Console.WriteLine("MethodB():");
_two.MethodTwo();
_four.MethodFour();
}
public void MethodC()
{
Console.WriteLine("MethodC():");
_one.MethodOne();
_two.MethodTwo();
_four.MethodFour();
}
}
The clients can call facade’s methods to satisfy its requirements.
var facade = new Facade();
facade.MethodA();
facade.MethodB();
facade.MethodC();
So this is the implementation of facade pattern. I hope you enjoy this article.
Enjoy coding!