37
PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

Embed Size (px)

Citation preview

Page 1: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

PATRONES DE DISEÑO

PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2

GRUPO 2: LOS PATRONES

Page 2: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

PARTE 1: CONCEPTOS INICIALES

• Antecedentes

• Contexto Actual

• Patrones de diseño

• Aportes de los patrones

• Tipos de Patrones

• Antipatrones

Page 3: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

ANTECEDENTES

• Particularidades de la ingeniería.

• Costumbres y “supersticiones”.

• Conocimiento intuitivo.

• El “maestro de obra” vs. El “ingeniero”.

• “Using Pattern Languages for OO Programs” (1987)

• The Gang of Four.

Page 4: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

CONTEXTO ACTUAL: INFORMÁTICA

• Disciplina joven.

• Casos de fracaso.

• Estadísticas negativas.

• Mejoras en los últimos años.

Page 5: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

PATRONES DE DISEÑO

• “Una solución probada que se puede aplicar con éxito a determinado tipo de problemas que aparecen repetidamente en un algún campo”.

• Una abstracción.

• Un planteamiento.

Page 6: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

APORTES DE LOS PATRONES

• Da un conjunto de elementos reusables.

• Catálogo de soluciones a problemas enfrentados exitosamente.

• Brinda un lenguaje común.

• Aporta una base de conocimiento.

Page 7: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

TIPOS DE PATRONES

Patrones creacionales

Patrones estructurales

Patrones de comportamiento

Page 8: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

ANTIPATRONES

Código “Spaguetti”

The Blob

Cortar y pegar

Page 9: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

Teoría => Aplicación

Page 10: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

PARTE 2: PATRONES EN TECNOLOGÍAS DE

DESARROLLO

Page 11: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

TECNOLOGÍA JAVA

• Planteamiento de soluciones optimas.

• Reutilización de soluciones anteriores satisfactorias.

• Abstraer las soluciones para ampliar su aplicación.

• Los patrones abarcan todas las etapas de desarrollo de Software.

Page 12: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

TECNOLOGÍA JAVA

• J2EE es una plataforma de programación para desarrollar y ejecutar aplicaciones hechas en Java.[JAVA1]

• J2EE presenta una arquitectura de N niveles distribuida, basándose en componentes de software modulares ejecutándose sobre un servidor de aplicaciones.[JAVA1]

Page 13: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

TECNOLOGÍA JAVA

• Cinco capas:

http://www.javaworld.com/columns/jw-java-design-patterns-index.html

Page 14: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

TECNOLOGÍA JAVA

Capa de Presentacion• Decorating Filter / Intercepting Filter.• Front Controller/ Front Component.• View Helper.• Composite view.• Service To Worker.• Dispatcher View.

Page 15: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

TECNOLOGÍA JAVA

Decorating Filter• Maneja varios tipos de peticiones que requieren

un procesamiento determinado.• Aplicado a procesos de validación de Session.• Elimina las comprobaciones mediante filtros

concatenados.

Page 16: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

TECNOLOGÍA JAVA

• A continuación se muestra el esquema de funcionamiento del patrón Decorating Filter.

http://java.sun.com/blueprints/corej2eepatterns/Patterns/

Page 17: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

TECNOLOGÍA JAVA

Capa de Lógica del Negocio• Business Delegate • Value Object Assembler.• Value List Handler/ Page-by-Page Iterator/

Paged List.• Service Locator.

Page 18: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

TECNOLOGÍA JAVA

Business Delegate• Un objeto de la capa de presentacion llama a

métodos remotos de los objetos de la capa del negocio.

• Búsqueda de elementos del negocio ( Lookup)• Llamada al servicio requerido.

Page 19: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

TECNOLOGÍA JAVA

• A continuación se muestra el esquema de funcionamiento del patrón Business Delegate.

http://java.sun.com/blueprints/corej2eepatterns/Patterns/

Page 20: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

TECNOLOGÍA JAVA

Capa de Integración• Data Access Object.• Service Activator.

Page 21: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

TECNOLOGÍA JAVA

Data Access Object• Consiste en utilizar un objeto como media de

acceso a un Data Source (base de datos, sistema de archivos, etc.)

• Abstrae y encapsula las operaciones relacionadas con el tratamiento de la base de datos.

Page 22: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

TECNOLOGÍA JAVA

• A continuación se muestra el esquema de funcionamiento del patrón Data Access Object:

http://java.sun.com/blueprints/corej2eepatterns/Patterns/

Page 23: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

TECNOLOGÍA PHP

• PHP5 2004 es la primera versión que soporta la POO.

• Debemos considerar que muchos patrones de negocio trabajan muy bien con lenguajes cuya aplicación se procesa en tiempo de ejecución.

• PHP no trabaja de esta manera. Por cada solicitud, o interacción con el usuario, un nuevo script es solicitado, por lo tanto, algunos patrones deben ser tratados con más cuidado.

Page 24: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

TECNOLOGÍA PHP[A pattern] is a solution to a problem in a context.

-The Gang of Four, Design Patterns: Elements of Reusable Object-Oriented Software

Patrones de diseño

•Patrón Singleton: clase especial que genera un y sólo un instancia del objeto.

•Patrón Abstract Factory: agrupa la creación de productos (objetos) con funcionalidades relacionadas.

Page 25: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

TECNOLOGÍA PHPIn the world of software, a pattern is a tangible manifestation of an organization’s tribal.

-Grady Brooch in Core J2EE Patterns

Patrón Singleton

Preferencias

-instancia

-_constructor()+getInstancia()+setProperty(clave: String, valor: String)+getProperty(clave: String)

<<creates>>

if(vacio(self::$instancia)){ self::$instancia = new Preferencias();}return self::$instancia;

Page 26: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

TECNOLOGÍA PHPIn the world of software, a pattern is a tangible manifestation of an organization’s tribal.

-Grady Brooch in Core J2EE Patterns

Patrón Singleton

Class Preferencias {private $props = array();private static $instancia;

private function _constructor() { }

public static function getInstacia(){if (vacio(self::$instancia)){

self::$instacia = new Preferencias();

}return self::$instancia;

}

public function setProperty($clave, $valor) {$this->props[$key] = $valor;

}

public function getProperty($key){return $this->props{$key];

}}

Page 27: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

TECNOLOGÍA PHP

Patrón Abstract Factory Mar

MarteMar TierraMar

Plano

Bosque

MartePlano TierraPlano

MarteBosque TierraBosque

TerrenoFactory

+getMar(): Mar+getPlano(): Plano+getBosque(): Bosque

TierraTerrenoFactory

+getMar(): Mar+getPlano(): Plano+getBosque(): Bosque

MarteTerrenoFactory

+getMar(): Mar+getPlano(): Plano+getBosque(): Bosque

Page 28: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

TECNOLOGÍA .NET

• 3 categorías

- Patrones Creacionales.

- Patrones Estructurales.

- Patrones de Comportamiento.

Page 29: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

TECNOLOGÍA .NET

Patrones Creacionales• Abstract factory.• Builder.• Singleton.

Patrones Estructurales• Facade.• Composite.

Page 30: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

TECNOLOGÍA .NET

Patrones de Comportamiento• Observer.• Iterator.• Proxy.

Page 31: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

TECNOLOGÍA .NET

Patrón facadeconsiste en simplificar el acceso a un conjunto de clases proporcionando una única clase que todos utilizaran para interactuar con ellas.[NET1]

http://corengine.files.wordpress.com/2009/04/facade1.gif

Page 32: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

TECNOLOGÍA .NET

Ejemplostatic void Main()    {      // Facade      Mortgage mortgage = new Mortgage();       // Evaluate mortgage eligibility for customer      Customer customer = new Customer("Ann McKinsey");      bool eligible = mortgage.IsEligible(customer, 125000);       Console.WriteLine("\n" + customer.Name +          " has been " + (eligible ? "Approved" : "Rejected"));       Console.ReadKey();    }  }

Page 33: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

TECNOLOGÍA .NET// Subsistema de Clase Aclass Bank  {    public bool HasSufficientSavings(Customer c, int amount)    {      Console.WriteLine("Check bank for " + c.Name);      return true;    }  }   // Subsistema de Clase B    class Credit  {    public bool HasGoodCredit(Customer c)    {      Console.WriteLine("Check credit for " + c.Name);      return true;    }  }

Page 34: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

TECNOLOGÍA .NET// Subsistema de Clase C   class Loan  {    public bool HasNoBadLoans(Customer c)    {      Console.WriteLine("Check loans for " + c.Name);      return true;    }  }   // Cliente  class Customer  {    private string _name; …….. }

Page 35: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

TECNOLOGÍA .NET  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} loan\n",cust.Name, amount);       bool eligible = true;      if (!_bank.HasSufficientSavings(cust, amount))      { eligible = false; }      else if (!_loan.HasNoBadLoans(cust))      { eligible = false; }      else if (!_credit.HasGoodCredit(cust))      { eligible = false; }      return eligible;    }  }}

Page 36: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

CONCLUSIONES

• Interoperabilidad de los patrones.• Mejor aprovechamiento de las características la

POO.• Necesidad de revisión continua de la aplicación

de patrones de diseño.

Page 37: PATRONES DE DISEÑO PROCESO DE CONSTRUCCIÓN DE SOFTWARE 2 GRUPO 2: LOS PATRONES

Referencias

• [JAVA1] http://www.java.com/es/ - Sitio Web Oficial de Sun Microsystems en ingles (visitado el 13/09/2010)

• [NET1]http://siul02.si.ehu.es/~alfredo/iso/06Patrones.pdf - Patron Facade (visitado el 15-09-10)