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

Preview:

Citation preview

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

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.

CONTEXTO ACTUAL: INFORMÁTICA

• Disciplina joven.

• Casos de fracaso.

• Estadísticas negativas.

• Mejoras en los últimos años.

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.

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.

TIPOS DE PATRONES

Patrones creacionales

Patrones estructurales

Patrones de comportamiento

ANTIPATRONES

Código “Spaguetti”

The Blob

Cortar y pegar

Teoría => Aplicación

PARTE 2: PATRONES EN TECNOLOGÍAS DE

DESARROLLO

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.

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]

TECNOLOGÍA JAVA

• Cinco capas:

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

TECNOLOGÍA JAVA

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

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.

TECNOLOGÍA JAVA

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

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

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.

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.

TECNOLOGÍA JAVA

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

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

TECNOLOGÍA JAVA

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

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.

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/

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.

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.

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;

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];

}}

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

TECNOLOGÍA .NET

• 3 categorías

- Patrones Creacionales.

- Patrones Estructurales.

- Patrones de Comportamiento.

TECNOLOGÍA .NET

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

Patrones Estructurales• Facade.• Composite.

TECNOLOGÍA .NET

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

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

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();    }  }

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;    }  }

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; …….. }

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;    }  }}

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.

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)

Recommended