Facade

Proporciona una interfaz unificada a un conjunto de interfaces de un sistema. Facade define una interfaz de alto nivel que hace al sistema más fácil de usar.

// "SubSystem"
class SubSystemOne
{
   public void MethodOne()
   {
         Console.WriteLine("SubSystemOne Method");
   }
}
class SubSystemTwo
{
   public void MethodTwo()
   {
      Console.WriteLine("SubSystemTwo Method");
   }
}
class SubSystemThree
{
   public void MethodThree()
   {
      Console.WriteLine("SubSystemThree Method");
   }
}
class SubSystemFour
{
   public void MethodFour()
   {
      Console.WriteLine("SubSystemFour Method");
   }
}
// "Facade"
class Facade
{
  // Fields
  SubSystemOne one;
  SubSystemTwo two;
  SubSystemThree three;
  SubSystemFour four;
  // Constructors
  public Facade()
  {
    one = new SubSystemOne();
    two = new SubSystemTwo();
    three = new SubSystemThree();
    four = new SubSystemFour();
  }
  // Methods
  public void MethodA()
  {
     Console.WriteLine( "\nMethodA() ---- " );
     one.MethodOne();
     two.MethodTwo();
     four.MethodFour();
  }
  public void MethodB()
  {
     Console.WriteLine( "\nMethodB() ---- " );
     two.MethodTwo();
     three.MethodThree();
  }
}
/// Client test
public class Client
{
   public static void Main(string[] args)
   {
      // Create and call Facade
      Facade f = new Facade();
      f.MethodA();
      f.MethodB();
   }
}