Patron fachada...

7,873 views

Published on

El Patrón Fachada sirve para proveer de una interfaz unificada sencilla que haga de intermediaria entre un cliente y una interfaz o grupo de interfaces mas complejas.

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
7,873
On SlideShare
0
From Embeds
0
Number of Embeds
15
Actions
Shares
0
Downloads
155
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Patron fachada...

  1. 1. 1
  2. 2. FACHADA  El Patrón Fachada es un patrón de diseño de tipo estructural uno de los patrones de la pandilla de los cuatro.  El Patrón Fachada sirve para proveer de una interfaz unificada sencilla que haga de intermediaria entre un cliente y una interfaz o grupo de interfaces mas complejas. 2
  3. 3. PROBLEMAS A LOS QUE SE APLICA:  Un cliente necesita acceder a parte de la funcionalidad de un sistema más complejo, el problema se solucionaría, definiendo una interfaz que permita acceder solamente a esa funcionalidad.  Existen grupos de tareas muy frecuentes para las que se puede crear código más sencillo y legible el problema se solucionaría, definiendo una funcionalidad que agrupe estas tareas en funciones o métodos mas sencillos y claros.  Dependencia entre el código del cliente y la parte interna de una biblioteca, el problema se soluciona creando un intermediario y realizar llamadas a la biblioteca sólo o, sobre todo, a través de él. 3
  4. 4. ESTRUCTURA Simplifica el acceso a un conjunto de clases proporcionando una única clase que todos utilizan para comunicarse con dicho conjunto de clases. Reduce la complejidad y minimiza dependencia. 4
  5. 5. EJEMPLO 5
  6. 6. class MainApp { /// <summary> /// Entry point into console application. /// </summary> static void Main() { // Fachada Mortgage mortgage = new Mortgage(); // Evalúe la elegibilidad de la hipoteca por cliente Customer customer = new Customer("Ann McKinsey"); bool eligible = mortgage.IsEligible(customer, 125000); Console.WriteLine("n" + customer.Name + " has been " + (elegible ? "Approvado" : "Rechazado")); // Wait for user Console.ReadKey(); } } 6
  7. 7. /// <summary> /// The 'Subsystem ClassA' class /// </summary> class Bank { public bool HasSufficientSavings(Customer c, int amount) { Console.WriteLine("Check bank for " + c.Name); return true; } } 7
  8. 8. /// <summary> /// The 'Subsystem ClassB' class /// </summary> class Credit { public bool HasGoodCredit(Customer c) { Console.WriteLine("Check credit for " + c.Name); return true; } } 8
  9. 9. /// <summary> /// The 'Subsystem ClassC' class /// </summary> class Loan { public bool HasNoBadLoans(Customer c) { Console.WriteLine("Check loans for " + c.Name); return true; } } 9
  10. 10. /// <summary> /// CLASE CLIENTE /// </summary> class Customer { private string _name; // Constructor public Customer(string name) { this._name = name; } // Gets the name public string Name { get { return _name; } } } 10
  11. 11. /// <summary> /// The 'Facade' class /// </summary> class Mortgage { private Bank _bank = new Bank(); private Loan _loan = new Loan(); private Credit _credit = new Credit(); public bool IsEligible(Customer cust, int amount) { Console.WriteLine("{0} applies for {1:C} loann", cust.Name, amount); bool eligible = true; // Check creditworthyness of applicant if (!_bank.HasSufficientSavings(cust, amount)) { eligible = false; } else if (!_loan.HasNoBadLoans(cust)) { eligible = false; } else if (!_credit.HasGoodCredit(cust)) { eligible = false; } return eligible; } } } 11
  12. 12. APLICABILIDAD SE UTILIZA EL PATRON FACHADA CUANDO: 1. Se quiera proporcionar una interfaz sencilla para un subsistema complejo. 2. Se quiera desacoplar un subsistema de sus clientes y de otros subsistemas, haciéndolo mas independiente y portable. 3. Se quiera dividir los sistemas en niveles: las fachadas serían el punto de entrada a cada nivel. 12
  13. 13. PATRONES RELACIONADOS  Abstract Factory, puede ser usado como el Facade porque proporciona una interfaz para crear objetos de un subsistema.  Mediator, es similar al Facade ya que éste abstrae la funcionalidad de las clases existentes  Usualmente solo es necesario un objeto Facade, de esa manera los objetos Facade son a menudo Singletons 13

×