Provide
a unified interface to a set of interfaces in a subsystem. Façade defines a
higher-level interface that makes the subsystem easier to use.
Participants
The
classes and/or objects participating in this pattern are:
- Facade(Mortgage Application)
Delegate’s
client requests to appropriate subsystem objects.
- Subsystem classes (Bank, Credit, Loan)
Implement
subsystem functionality.
Handle
work assigned by the Facade object.
Have no knowledge of the facade and keep no
reference to it.Example of Facade Design Pattern
using System;
namespace Facade.Structural
{
/// <summary>
/// MainApp
startup class for Structural
/// Facade Design
Pattern.
/// </summary>
class MainApp
{
/// <summary>
/// Entry
point into console application.
/// </summary>
public static void Main()
{
Facade facade
= new Facade();
facade.MethodA();
facade.MethodB();
//
Wait for user
Console.ReadKey();
}
}
/// <summary>
/// The
'Subsystem ClassA' class
/// </summary>
class SubSystemOne
{
public void MethodOne()
{
Console.WriteLine("
SubSystemOne Method");
}
}
/// <summary>
/// The
'Subsystem ClassB' class
/// </summary>
class SubSystemTwo
{
public void MethodTwo()
{
Console.WriteLine("
SubSystemTwo Method");
}
}
/// <summary>
/// The
'Subsystem ClassC' class
/// </summary>
class SubSystemThree
{
public void MethodThree()
{
Console.WriteLine("
SubSystemThree Method");
}
}
/// <summary>
/// The
'Subsystem ClassD' class
/// </summary>
class SubSystemFour
{
public void MethodFour()
{
Console.WriteLine("
SubSystemFour Method");
}
}
/// <summary>
/// The 'Facade'
class
/// </summary>
class Facade
{
private SubSystemOne _one;
private SubSystemTwo _two;
private SubSystemThree _three;
private SubSystemFour _four;
public Facade()
{
_one
= new SubSystemOne();
_two
= new SubSystemTwo();
_three
= new SubSystemThree();
_four
= new SubSystemFour();
}
public void MethodA()
{
Console.WriteLine("\nMethodA()
---- ");
_one.MethodOne();
_two.MethodTwo();
_four.MethodFour();
}
public void MethodB()
{
Console.WriteLine("\nMethodB()
---- ");
_two.MethodTwo();
_three.MethodThree();
}
}
}
|
Output
MethodA() ----
SubSystemOne Method SubSystemTwo Method SubSystemFour Method MethodB() ---- SubSystemTwo Method SubSystemThree Method |
No comments:
Post a Comment