Upload
nii-caytuiro
View
229
Download
0
Embed Size (px)
Citation preview
Patrones de Disentildeo
Sumario
A lo largo de esta serie de artiacuteculos haremos un repaso de los principales patrones de disentildeo de software y veremos coacutemo llevar a cabo su implementacioacuten con Visual Basic NET Veremos queacute son los patrones de disentildeo y cuaacuteles son los patrones de disentildeo baacutesicos patrones que aparecen con una gran frecuencia en la praacutectica La presentacioacuten de cada patroacuten iraacute acompantildeado de una explicacioacuten teoacuterica y de una visioacuten praacutectica en la que se veraacute su aplicacioacuten con un lenguaje de programacioacuten lo que nos permitiraacute apreciar mejor su potencial
Iacutendice de contenido
Patrones de Disentildeo
o Introduccioacuten
o Patrones de disentildeo concepto y disciplina
o Los oriacutegenes de los patrones de disentildeo
o Clasificacioacuten de los patrones de disentildeo
o El patroacuten Interfaz
o El patroacuten Delegacioacuten
o Patrones de creacioacuten Singleton
Arriba
Introduccioacuten El movimiento de los patrones de disentildeo se encuentra actualmente en auge Todos los meses surgen nuevas publicaciones escritas artiacuteculos digitales y comunidades en la web que tratan sobre esta disciplina Ademaacutes al tratarse de un campo relacionado con la fase de disentildeo del software eacuteste es independiente del lenguaje de programacioacuten empleado Los patrones de disentildeo pueden ser aplicados en lenguajes tan dispares como Java C++ PHP Visual Basic C etc Un ejemplo de la importancia que estaacuten tomando los patrones de disentildeo de software lo representa el hecho de que la metodologiacutea de desarrollo METRICA 3 de la Administracioacuten General del Estado incorpora una tarea dedicada a la identificacioacuten de patrones (DSI 22 Identificacioacuten de Mecanismos Geneacutericos de Disentildeo)
Arriba
Patrones de disentildeo concepto y disciplina Los patrones de disentildeo de software son soluciones reutilizables de problemas recurrentes que aparecen durante el proceso de disentildeo de software orientado a objetos iquestPor queacute surgen los patrones de disentildeo Por la necesidad de transmitir la experiencia Lo que diferencia a un programador brillante y experto de un programador igualmente brillante pero inexperto es la experiencia Conforme un programador gana experiencia eacuteste reconoce el parecido entre los nuevos problemas que van surgiendo y los problemas que ya ha resuelto con anterioridad Incluso cuando tiene maacutes experiencia es capaz de reconocer que las soluciones a estos problemas siguen patrones recurrentes Con el conocimiento de estos patrones los programadores expertos son capaces de identificar las situaciones en las que eacutestos tienen aplicacioacuten y utilizarlos sin tener que detenerse para analizar el problema y vislumbrar diferentes estrategias de resolucioacuten No obstante que un programador haya descubierto un determinado patroacuten no implica que sea capaz de expresar su conocimiento a otros programadores Aquiacute es donde aparece la disciplina de
los patrones de disentildeo Esta disciplina establece una especie de especificacioacuten para documentar los patrones de disentildeo de software orientado a objetos Seguacuten esta especificacioacuten todo patroacuten de disentildeo debe ir acompantildeado de Nombre del patroacuten Gracias a eacuteste nombre podremos identificar al patroacuten y referimos al mismo cuando discutamos con otros disentildeadores durante la fase de disentildeo Sinopsis Breve resumen que nos indica la esencia de la solucioacuten proporcionada por el patroacuten Es de gran utilidad para los programadores expertos que no conocen el nombre del patroacuten De esta forma se les indica lo que eacuteste hace Contexto Descripcioacuten detallada del problema recurrente que el patroacuten viene a solucionar Solucioacuten Contiene una descripcioacuten detallada del patroacuten y viene acompantildeada de un diagrama de clases UML que refleja graacuteficamente esta solucioacuten Ejemplo de aplicacioacuten La descripcioacuten del patroacuten siempre seraacute maacutes rica si va acompantildeada de un ejemplo practico No obstante a lo largo de esta serie de artiacuteculos no emplearemos este formato de documentacioacuten que aunque exhaustivo podriacutea resultar difiacutecil de seguir
Arriba
Los oriacutegenes de los patrones de disentildeo Antes de entrar en materia veremos de forma muy breve los oriacutegenes de los patrones de disentildeo de software El concepto de patroacuten de disentildeo procede del campo de la arquitectura Los trabajos del arquitecto Christopher Alexander (veacutease referencia [1] del cuadro Bibliografiacutea recomendada) publicados a finales de la deacutecada de los 70 postulaban la existencia de patrones repetitivos en las soluciones adoptadas en planeamiento urbaniacutestico y construccioacuten Estas ideas eran susceptibles de ser aplicadas a otras disciplinas entre ellas la de la Ingenieriacutea del Software Asiacute en el antildeo 1987 los archiconocidos WCunningham y Kent Beck (padre de la metodologiacutea Extreme Programming) utilizaron algunas de las ideas de Alexander para identificar una serie de patrones en la construccioacuten de interfaces de usuario (veacutease referencia [2] del cuadro Bibliografiacutea recomendada) Estos patrones se emplearon en el lenguaje SmallTalk (uno de los pioneros de los lenguajes orientados a objetos puros) y dieron lugar al conocidiacutesimo patroacuten ModeloVistaControlador En el antildeo 1994 Gamma Helm Vlissides y Jhonson (grupo de autores conocido como el Gof o pandilla de los cuatro) publicaron el libro que es considerado la Biblia de los patrones de disentildeo (veacutease referencia [3] del cuadro Bibliografiacutea recomendada) Este libro popularizoacute la idea de los patrones de disentildeo e introdujo la clasificacioacuten de patrones de disentildeo maacutes extendida en la actualidad A partir de este momento se produjo la explosioacuten del fenoacutemeno de los patrones de disentildeo Se han desarrollado patrones aplicables a diferentes niveles de la loacutegica de la aplicacioacuten como persistencia mensajeriacutea presentacioacuten etc El uacuteltimo movimiento parece ser el de los patrones para la creacioacuten de aplicaciones empresariales que tratan de cubrir todos los aspectos de un sistema empresarial En este sentido cabe destacar los trabajos de Martin Fowler(veacutease referencia [4] del cuadro Bibliografiacutea recomendada) o las publicaciones de Sun(veacutease referencia [5] del cuadro Bibliografiacutea recomendada) y Microsoft (veacutease referencia [6] del cuadro Bibliografiacutea recomendada) para mostrar coacutemo construir aplicaciones empresariales con sus plataformas de desarrollo Paralelamente al concepto de patroacuten ha ido surgiendo el concepto de Antipatroacuten Se basa en la idea de que con frecuencia resulta maacutes faacutecil aprender de los errores por lo que se trata de catalogar los errores maacutes frecuentes de anaacutelisis disentildeo y programacioacuten
Arriba Clasificacioacuten de los patrones de disentildeo Los patrones de disentildeo variacutean tanto en su granularidad como en su nivel de abstraccioacuten Puesto que existen numerosos patrones de disentildeo eacutestos se clasifican en categoriacuteas lo que facilita su aprendizaje y permite referirse a patrones similares mediante la familia a la que pertenecen En la obra del Gof(veacutease referencia [3] del cuadro Bibliografiacutea recomendada) se proponen las siguientes categoriacuteas Patrones de creacioacuten Esta categoriacutea agrupa a los patrones que proporcionan guiacuteas de coacutemo construir objetos cuando su creacioacuten implique la toma de una decisioacuten Esta decisioacuten puede ser baacutesicamente elegir queacute subclase dentro de una jerarquiacutea de herencia instanciar y queacute clase tiene la responsabilidad de su creacioacuten Patrones estructurales Los patrones de esta categoriacutea describen mecanismos geneacutericos para organizar diferentes clases de objetos entre siacute Patrones de comportamiento Estos patrones se utilizan para organizar gestionar y combinar el comportamiento de diferentes objetos A esta clasificacioacuten Mark Grand en su obra Patterns in Java (veacutease referencia [7] del cuadro Bibliografiacutea recomendada) antildeade la categoriacutea de Patrones fundamentales Seguacuten este autor esta categoriacutea engloba a patrones que aparecen con mucha frecuencia en el resto de patrones de mayor complejidad Comenzaremos nuestro repaso de los principales patrones de disentildeo por dos patrones de esta categoriacutea el patroacuten Interfaz y el patroacuten Delegacioacuten
Arriba
El patroacuten Interfaz Este patroacuten praacutecticamente aparece en el resto de patrones de disentildeo que vamos a ver a lo largo de esta serie de artiacuteculos por lo que con eacutel nos vamos a detener un poco maacutes Se utiliza cuando deseamos que una clase que hace uso de los servicios proporcionados por otras clases permanezca independiente de estas iquestQueacute ventajas obtenemos con ello Reduce el acoplamiento entre clases y evita la propagacioacuten de cambios iquestY coacutemo podemos implementar este patroacuten A traveacutes de la utilizacioacuten de interfaces Una interfaz define un contrato que deben cumplir una serie de clases independientemente de los detalles internos de implementacioacuten de cada una de eacutestas Se trata por tanto de un tipo especial de herencia denominado de interfaz Mediante la aplicacioacuten de este patroacuten de disentildeo podemos independizar una clase de otra que le presta servicios haciendo que no tenga una referencia a la clase que ofrece el servicio sino a la interfaz que define el contrato del servicio a prestar iquestCoacutemo podemos implementar este patroacuten de disentildeo con Visual Basic NET En VBNET podemos definir una interfaz de la siguiente manera Listado 01 - Interfaz definida en VBNET ------------------------------------------- Public Interface IEducado Sub diHola() Sub diAdios() End Interface -------------------------------------------
Diagrama de clases UML del patroacuten Interfaz
Esta interfaz define un comportamiento que podraacuten heredar otras clases a traveacutes de la herencia de interfaz En el listado 1 tenemos dos implementaciones de esta interfaz con VBNET En dicho ejemplo tenemos una interfaz IEducado que obliga a que todas las clases que la implementen tengan meacutetodos de saludo y despedida impresos por consola En el En el listado 2 vemos como la clase Educadolngles implementa estos meacutetodos en ingleacutes mientras que la clase EducadoEspantildeol los implementa en espantildeol Listado 02 - Clases que utilizan la interfaz IEducado ------------------------------------------- Public Class EducadoIngles Implements IEducado Friend Sub Hola() Implements IEducadodiHola ConsoleWriteLine(Hello) End Sub Friend Sub Adios() Implements IEducadodiAdios ConsoleWriteLine(Bye) End Sub End Class ------------------------------------------- Public Class EducadoEspantildeol Implements IEducado Friend Sub Hola() Implements IEducadodiHola ConsoleWriteLine(Hola) End Sub Friend Sub Adios() Implements IEducadodiAdios ConsoleWriteLine(Adios) End Sub End Class ------------------------------------------- Listado 03 - Forma baacutesica de utilizr el Interfaz IEducado ------------------------------------------- Public Sub ProbarInterfazFormaUno() Instanciar una clase DimoEnEspantildeol As New EducadoEspantildeol() definicion de la interfaz asignando una clase a la interfaz DimiMuyEduado As IEducado = oEnEspantildeol usando la interfaz iMuyEduadodiHola() iMuyEduadodiAdios() ------------------------------ asignar otra clase a la interfaz Instanciar una clase
DimoEnIngles As New EducadoIngles() asignar la clase a la interfaz iMuyEduado = oEnIngles usando la interfaz iMuyEduadodiHola() iMuyEduadodiAdios() ---------------- iMuyEduado = Nothing oEnEspantildeol = Nothing oEnIngles = Nothing End Sub ------------------------------------------- Supongamos que tenemos una clase encargada de interactuar con el usuario en un entorno de liacutenea de comandos saludaacutendolo al iniciar la sesioacuten y despidieacutendose al terminar Podemos independizar nuestra clase del idioma empleado haciendo que tenga una referencia a la interfaz educado Listado 04 - Clase que implementa la interfaz en el constructor ------------------------------------------- ------------------------------------------- Public Class HaceUsoInterfazEducado Dim iMuyEduado As IEducado Public Sub New(ByValUnObjetoIdioma As Object) definicion de la interfaz asignando una clase a la interfaz ctypeespor [Option Strict ON] iMuyEduado = CType(UnObjetoIdioma IEducado) End Sub Public Sub diHola() iMuyEduadodiHola() End Sub Public Sub diAdios() iMuyEduadodiAdios() End Sub End Class ------------------------------------------- En funcioacuten del idioma seleccionado por el usuario esta clase recibiraacute en su constructor una implementacioacuten u otra sin necesidad de modificar la clase que hace uso de los servicios ofrecidos por esta interfaz Es maacutes podemos seguir antildeadiendo soporte de nuevos idiomas creando nuevas implementaciones de la interfaz Listado 05 - Funcioacuten que utiliza la clase anterior [HaceUsoInterfazEducado] ------------------------------------------- Public Sub ProbarInterfazFormaDos() Instanciar una clase en funcioacuten del idioma a utilizar DimoEnEspantildeol As New EducadoEspantildeol() instanciar la clase que usa el interfaz DimoIEducado As New HaceUsoInterfazEducado(oEnEspantildeol) oIEducadodiHola() oIEducadodiAdios()
oIEducado = Nothing oEnEspantildeol = Nothing End Sub ------------------------------------------- Otros lenguajes maacutes antiguos como C++ o Visual Basic carecen de interfaces En su lugar ofrecen otra construccioacuten las clases abstractas tambieacuten presentes en Java y C En C++ una clase es abstracta cuando tiene uno de sus meacutetodos virtual El modificador virtual es similar al modificador abstract de Java y otros lenguajes En C++ definiriacuteamos el contrato de nuestra interfaz con una clase abstracta (que puede ser pura si todos sus meacutetodos son abstractos) y cada una de las implementaciones de la interfaz seriacutean clases que heredariacutean de eacutesta Incluso las uacuteltimas versiones de Visual Basic (5 y 6) antes de su sustitucioacuten por Visual Basic NET permitiacutean la definicioacuten de clases abstractas Para tal fin habiacutea que crear un moacutedulo de clase con el asistente visual del lenguaje y dar el valor PublicNoCreatable a la propiedad Instancing del moacutedulo Esto haciacutea que no se pudiese utilizar ni el operador new ni la funcioacuten CreateObject para obtener instancias de la clase Un moacutedulo podiacutea implementar esta interfaz mediante el uso de la palabra reservada implements
Arriba
El patroacuten Delegacioacuten La delegacioacuten consiste en un medio de extender y reutilizar la funcionalidad de una clase mediante la creacioacuten de otra clase que se la proporcione Todos los lenguajes orientados a objetos proporcionan mecanismos para implementar este patroacuten pues basta con antildeadir una nueva referencia a la clase que consume el servicio
Diagrama de clases UML del patroacuten Delegacioacuten
La importancia del patroacuten Delegacioacuten radica en que nos proporciona un mecanismo para decidir cuaacutendo debemos hacer que una clase herede de otra o cuando antildeadirle una referencia para utilizar sus servicios En nuestro ejemplo de la clase educada parece claro que hay que utilizar delegacioacuten Muchas veces la decisioacuten nos la da el sentido comuacuten (la regla de es un) mientras que otras veces habraacute que hacer un anaacutelisis del nuacutemero de herencias posibles En nuestro ejemplo antildeadiendo una referencia a la interfaz IEducado soacutelo crearemos una clase que consuma sus servicios mientras que si optamos por el mecanismo de la herencia tendriacuteamos que crear dos subclases una de EducadoIngles y otra de EducadoEspantildeol Ademaacutes conforme fuese creciendo el nuacutemero de implementaciones de IEducado habriacutea que ir aumentando el nuacutemero de herencias El listado siguiente se muestra la codificacioacuten en VBNET de este patroacuten Listado 06 - Patroacuten delegacioacuten (extracto del listado 4) ------------------------------------------- PublicClassHaceUsoInterfazEducado DimiMuyEduado As IEducado El coacutedigo completo de la clase esta en el listado 04 EndClass -------------------------------------------
Arriba
Patrones de creacioacuten Singleton
Una vez introducidos dos de los patrones de disentildeo fundamentales Interfaz y Delegacioacuten veremos un patroacuten del tipo creacional muy frecuente en la praacutectica el patroacuten de disentildeo Singleton Este patroacuten se utiliza cuando queremos garantizar que de una determinada clase soacutelo existe una instancia De esta forma todos los objetos que hagan uso de esa clase utilizaraacuten la misma instancia iquestCuaacutendo suele ser necesario aplicar un Singleton Cuando nos encontramos con clases que deben encargarse de gestionar un recurso bien sea externo (las conexiones a una base de datos por ejemplo) bien sea interno (informacioacuten de configuracioacuten global a nivel de sistema informacioacuten uacutenica para el contexto de la aplicacioacuten etc)
Gestor de conexiones con el patroacuten Singleton
iquestCoacutemo se implementa un Singleton En primer lugar se debe impedir que los clientes construyan instancias de la clase que se desea hacer Singleton Para ello lo normal es hacer su constructor privado Ademaacutes se debe hacer que dicha clase contenga una referencia estaacutetica a la uacutenica instancia de esa propia clase que puede existir En el mundo de la orientacioacuten a objetos se denomina estaacuteticas a aquellas propiedades y meacutetodos que son comunes de una clase y por tanto compartidas por todas sus instancias Por uacuteltimo se debe antildeadir al Singleton un meacutetodo puacuteblico y estaacutetico que devuelva la uacutenica referencia existente de esa clase En el listado siguiente vemos coacutemo implementar un Singleton en Visual BasicNET Listado 07 - Patroacuten de creacioacuten Singleton ------------------------------------------- PublicClassSingleton Variable que contiene la referencia a ESTA clase Private Shared m_Instance As Singleton = Nothing constructor privado Private Sub New() o hacer nada End Sub meacutetodo estaacutetico permite obtener la referencia de la clase siempre se devuelve la misma referencia Public Shared ReadOnly Property Instance() As Singleton Get If m_Instance Is Nothing Then m_Instance = New Singleton() End If Return m_Instance End Get End Property
EndClass ------------------------------------------- El patroacuten Singleton Asegura que solo se cree una instancia de la clase y provee un punto global de acceso a esta En el siguiente ejemplo crearemos una clase que inicialice y retorne un objeto conexioacuten si no existe y si ya existen que nos retorne la instancia existente El ejemplo estaacute escrito por Enriquillo Mantildeoacuten y lo encontre el dia 22122004 en la paacutegina siguiente httpwwwmicrosoftcomspanishmsdncomunidadmtjnetvoicesart151asp Listado 08 - Patroacuten de creacioacuten Singleton ------------------------------------------- Implementacioacuten del Patroacuten Singleton PublicClassConexion Objeto que contendraacute la instancia compartida Private Shared m_objConexion As Conexion Privatem_FechaCreacion As String El Mutex es una clase que proporciona NET FrameWork Con ella evitaremos que en un ambiente multithread se cree alguacuten tipo de conflicto Private Shared m_Mutex As New SystemThreadingMutex Private Sub New() m_FechaCreacion = DateTimeNowToString End Sub Este meacutetodo eliminaraacute la instancia ya existente Public Shared Sub KillInstance() m_objConexion = Nothing End Sub Este seraacute el meacutetodo que proporcionara el acceso A la instancia existente si no existe creara unanueva (meacutetodo Singleton) Public Shared Function GetInstance() As Conexion m_MutexWaitOne() If m_objConexion Is Nothing Then m_objConexion = New Conexion End If m_MutexReleaseMutex() Return m_objConexion EndFunction Propiedad que presenta la fecha y hora en que Fue creada la instancia PublicReadOnlyPropertyFechaCreada() As String Get Return m_FechaCreacion End Get End Property End Class ------------------------------------------- La implementacioacuten para probar nuestra clase es bastante sencilla para instanciarla
Listado 09 - Patroacuten de creacioacuten instanciarla ------------------------------------------- Try Dim objConexion As SingletonConexion objConexion = SingletonConexionGetInstance TextBox1Text amp= Instancia Creada el + objConexionFechaCreadaampvbCrLf Catch ex As Exception MessageBoxShow(exMessage) End Try ------------------------------------------- Y para inicializarla Listado 10 - Patroacuten de creacioacuten inicializarla ------------------------------------------- Try SingletonConexionKillInstance() TextBox1Text amp= InstanciaEliminada---- ampvbCrLf Catch ex As Exception MessageBoxShow(exMessage) End Try -------------------------------------------
Arriba
Para Saber Mas [1] A Pattern Language Towns Buildings Construction Christopher Alexander 1977 [2] Using Patterns Languages for Object-Oriented Programs Ward Cunningham Kent Beck 1987 [3] Desing Patterns Elements of Reusable Object Oriented Software Gamma Helm Vlissides y Jonson 1994 [4] Patterns Of Enterprise Application Architecture Martiacuten Fowler [5] Java Blueprints httpjavasuncomblueprintspatternscataloghtm [6] NET Enterprise Patterns httpmsdnmicrosoftcomarchitecturepatterns [7] Patterns in Java A Catalog of Reusable Design Patterns Illustrated with UML Mark Grand [8] Te Server Side En esta web encontraremos una seccion dedicada a patrones de disentildeo wwwtheserversidecom
Arriba
Referencia bibliograacutefica Este documento esta COPIADO en su totalidad de un articulo escrito por Aacutelvaro Zabala Ordoacutentildeez y fue publicado en la revista Soacutelo Programadores num 113 con el tiacutetulo Patrones de Disentildeo Un curso practico [I] El articulo original muestra ejemplos en varios lenguajes En esta COPIA los he sustituido por ejemplos escritos exclusivamente en Visual Basic NET y ademaacutes he modificado la redaccioacuten de los paacuterrafos que haciacutean referencia a los ejemplos en otros lenguajes al objeto de darle una coherencia al texto final
Usted aprenderaacute a Aplicar meacutetodos probados para crear adaptables confiables y
eficientes NET y aplicaciones de cliente inteligente Resolver problemas de programacioacuten complejos con los patrones de
disentildeo estaacutendar de la industria Entregar el coacutedigo libre de errores con el desarrollo basado en pruebas
en Visual Studio Cree capas arquitecturas de reutilizacioacuten y evitar la superposicioacuten
funcional Aplicar las mejores praacutecticas para el disentildeo de la clase mejor Simplificar y automatizar las tareas repetitivas
Beneficios del curso El conocimiento de la NET y las bibliotecas no es suficiente para desarrollar aplicaciones robustas patrones de disentildeo probado y las mejores praacutecticas extraiacutedas de la sabiduriacutea de los expertos que ayuda en la creacioacuten de aplicaciones sobre una base soacutelida Este curso proporciona los conocimientos necesarios para resolver los problemas del mundo real de desarrollo de software y ofrecer aplicaciones raacutepida y fiable iquestQuieacuten debe asistir arquitectos programadores y cualquier sistema de desarrollo NET experiencia de programacioacuten a nivel de curso 419 programacioacuten de C o Curso 503 Visual Basic de programacioacuten para NET se supone Manos a la formacioacuten Ganas experiencia en la implementacioacuten NET mejores praacutecticas y patrones de disentildeo Ejercicios completado en VB o C incluyen
La conciliacioacuten de diversos problemas de procesamiento con el patroacuten Estrategia
La simplificacioacuten de un sistema complejo con el patroacuten Fachada La explotacioacuten de Microsoft Entity Framework para acceso a datos y
actualizaciones Creacioacuten de un modelo de objetos de dominio de Negocios Construccioacuten de casos de prueba automatizado Estructuracioacuten de un interfaz de usuario comprobable con el patroacuten
Modelo Vista Controlador La captura y reutilizacioacuten de las pruebas dentro de Visual Studio
Contenido del curso 511
Introduccioacuten Codificacioacuten de las mejores praacutecticas Simplificacioacuten de software con patrones de disentildeo
Simplificacioacuten de programacioacuten complejos con probada patrones de disentildeo La aplicacioacuten de interfaces simples a complejos algoritmos
La unificacioacuten de interfaces de subsistemas para facilitar su uso y reutilizacioacuten
Aplicacioacuten del modelo de fachada Variando la funcionalidad mediante la programacioacuten de interfaces
Fechas del curso
Asistir a eventos destacoacute en persona o en liacutenea con LearningTreeAnyWareTM
Feb 8 hasta 11 Reston VA inscribirse
5to al 8vo 04 Toronto inscribirse
19 a 22 ab Boston (Waltham) inscribirse
04 26ta al 29o Nueva York inscribirse
10 al 13 mayo Los Angelesinscribirse
10 al 13 mayo Ottawa inscribirse
17 al 20 mayo Rockville MD inscribirse
Mayo 24-27 Chicago (Schaumburg) inscribirse
31 mayo a 3 junio Reston VA inscribirse
07 al 10 junio Nueva York inscribirse
Para inscripciones AnyWare por favor regiacutestrese al menos 10 diacuteas antes del inicio del curso Maacutes fechas y lugares En las instalaciones y Formacioacuten personalizada Llevar este o cualquier otro aacuterbol curso de aprendizaje a su ubicacioacuten o la han personalizado para su organizacioacuten Matriacutecula
$ 2890 Norma de matriacutecula
Matriacutecula con un Plan de Ahorro
$ 1700 Premium-Pass
1733 doacutelares Pasaporte de formacioacuten
$ 2250 Vale 10-Pack
$ 2573 Gobierno de descuento
$ 2600 Antiguos Alumnos de descuento de Oro
Alumni Gold Discount
Mejorar la adaptabilidad y la flexibilidad de su aplicacioacuten Explotar el patroacuten Estrategia
Ampliacioacuten de la conducta objeto de forma dinaacutemica El aumento de la funcionalidad sin afectar al coacutedigo existente Composicioacuten de objetos con el patroacuten Decorador
El logro de reutilizacioacuten y flexibilidad La eliminacioacuten de la duplicacioacuten de coacutedigo al esbozar las bases de un
algoritmo Empleando el modelo de plantilla Meacutetodo
Interfaz clases incompatibles La transformacioacuten de una interfaz para agregar valor a coacutedigo
existente Aprovechar el modelo del adaptador
La aplicacioacuten de teacutecnicas de desarrollo basado en pruebas Automatizar las pruebas unitarias
Acortar los ciclos de desarrollo de pruebas automatizadas Mejora de la calidad con una cobertura consistente de pruebas La eliminacioacuten de los errores de regresioacuten con las pruebas
reutilizables La integracioacuten de las pruebas y la codificacioacuten
La aplicacioacuten de la prueba praacutectica de programacioacuten de sesiones para conducir el disentildeo del coacutedigo
Generar retroalimentacioacuten inmediata luz verde para el aumento de la calidad del coacutedigo y los cortos ciclos de desarrollo de funciones
Organizar coordinar y ejecutar los casos de prueba con Visual Studio Arquitectura de una aplicacioacuten de capas Disentildeo de la arquitectura de aplicaciones
Capas arquitecturas de reutilizacioacuten durabilidad y capacidad de ampliacioacuten
Acceso a datos de la capa de negocio La disociacioacuten de creacioacuten de objetos con el patroacuten de la faacutebrica Preservar la identidad del objeto con el patroacuten de identidad Mapa
Programacioacuten niveles de la aplicacioacuten Estructuracioacuten de un cliente Web o de aplicaciones ricas con el
patroacuten Observer Organizador rico estado-aplicaciones con el modelo de Estado Reestructuracioacuten de las tablas de la base de datos sin afectar el
coacutedigo de la aplicacioacuten Modelado de un aacuterea de negocio
Libertador ricos Business Object modelos de las estructuras de base de datos utilizando el patroacuten de modelo de dominio
Cartografiacutea ricos Business Objects a las tablas de base de datos con el patroacuten Data Mapper
El colapso de las jerarquiacuteas de objetos de negocio con el patroacuten de herencia Mapper
La explotacioacuten de la programacioacuten declarativa en Microsoft Entity Framework para implementar clases de datos de cartografiacutea
Attend your first course and you will receive a personalized Alumni Gold Discount card entitling you to save as much as $320 on each course you take within the following 12 months
Alumni Gold Discount Attend your first course and you will receive a personalized Alumni Gold Discount card entitling you to save as much as $320 on each course you take within the following 12 months
Federal State and Local Government Federal State and Local Government employees can take advantage of government discount pricing for Learning Tree Courses
Federal State and Local Government Federal State and Local Government employees can take advantage of government discount pricing for Learning Tree Courses
Training Vouchers With Vouchers any members of your team can attend any Learning Tree Course anytime Available in 5- and 10-Course Packs or larger each Voucher is valid for 12 months and is used in lieu of the tuition for any Learning Tree Public Course
Training Vouchers With Vouchers any members of your team can attend any Learning Tree Course anytime Available in 5- and 10-Course Packs or larger each Voucher is valid for 12 months and is
La aplicacioacuten de Buenas Praacutecticas La organizacioacuten y la aplicacioacuten de la loacutegica de negocio
La aplicacioacuten de los patrones de dominio de la loacutegica en el nivel medio
Ampliacioacuten de tipos de entidad con clases parciales La manipulacioacuten de los grupos de entidades con las clases de loacutegica
de negocio Las mejores praacutecticas en el disentildeo de clase
Proteccioacuten contra la rigidez con el Abierto de Principio Cerrado La extraccioacuten de las nuevas clases con el Principio de Responsabilidad
Individual El uso eficaz de la herencia
Automatizar tareas repetitivas Facilitar los datos de coacutedigo de acceso
La reduccioacuten de la base de datos de coacutedigo de acceso mediante la explotacioacuten de la entidad de navegacioacuten Propiedades
La eliminacioacuten de coacutedigo de actualizacioacuten de base de datos con el cambio de entidad de seguimiento Mejorar el coacutedigo de aplicacioacuten
Automatizacioacuten de revisiones de disentildeo con FxCop y Visual Studio Anaacutelisis
La eliminacioacuten de la duplicacioacuten de coacutedigo a traveacutes de la refactorizacioacuten para los patrones de disentildeo
ltltVolver a Visual Studio y NET Listado de cursos Cursos relacionados
Construyendo Aplicaciones Web con ASPNET y Ajax - Curso 506 ASPNET WebForms Integral Introduccioacuten - Curso 512 Construyendo Aplicaciones Web con ASPNET MVC - Curso 977 NET 4 Programacioacuten - Curso 2620 WPF y Silverlight Introduccioacuten - Curso 975 Servicios Web NET Introduccioacuten - Curso 2601 De programacioacuten C extendido Caracteriacutesticas - Curso 973 Programacioacuten de aplicaciones con SharePoint 2010 - NET Curso 2615 Windows Azure - Curso 2602
used in lieu of the tuition for any Learning Tree Public Course
Training Passport As a Training Passport holder one person can take as many as three hands-on courses in 12 months for as little as $1733 per course Only $5200 - save as much as 45
Training Passport As a Training Passport holder one person can take as many as three hands-on courses in 12 months for as little as $1733 per course Only $5200 - save as much as 45
Premium Pass The NEW Premium Pass gives you more time to take more courses while saving more money Take 4 courses within 24 months for as little as $1700 per course mdash at a price of only $6790 you can SAVE as much as 45 per course
Premium Pass The NEW Premium Pass gives you more time to take more courses while saving more money Take 4 courses within 24 months for as little as $1700 per course mdash at a price of only $6790 you can SAVE as much as 45 per course
los patrones de disentildeo Esta disciplina establece una especie de especificacioacuten para documentar los patrones de disentildeo de software orientado a objetos Seguacuten esta especificacioacuten todo patroacuten de disentildeo debe ir acompantildeado de Nombre del patroacuten Gracias a eacuteste nombre podremos identificar al patroacuten y referimos al mismo cuando discutamos con otros disentildeadores durante la fase de disentildeo Sinopsis Breve resumen que nos indica la esencia de la solucioacuten proporcionada por el patroacuten Es de gran utilidad para los programadores expertos que no conocen el nombre del patroacuten De esta forma se les indica lo que eacuteste hace Contexto Descripcioacuten detallada del problema recurrente que el patroacuten viene a solucionar Solucioacuten Contiene una descripcioacuten detallada del patroacuten y viene acompantildeada de un diagrama de clases UML que refleja graacuteficamente esta solucioacuten Ejemplo de aplicacioacuten La descripcioacuten del patroacuten siempre seraacute maacutes rica si va acompantildeada de un ejemplo practico No obstante a lo largo de esta serie de artiacuteculos no emplearemos este formato de documentacioacuten que aunque exhaustivo podriacutea resultar difiacutecil de seguir
Arriba
Los oriacutegenes de los patrones de disentildeo Antes de entrar en materia veremos de forma muy breve los oriacutegenes de los patrones de disentildeo de software El concepto de patroacuten de disentildeo procede del campo de la arquitectura Los trabajos del arquitecto Christopher Alexander (veacutease referencia [1] del cuadro Bibliografiacutea recomendada) publicados a finales de la deacutecada de los 70 postulaban la existencia de patrones repetitivos en las soluciones adoptadas en planeamiento urbaniacutestico y construccioacuten Estas ideas eran susceptibles de ser aplicadas a otras disciplinas entre ellas la de la Ingenieriacutea del Software Asiacute en el antildeo 1987 los archiconocidos WCunningham y Kent Beck (padre de la metodologiacutea Extreme Programming) utilizaron algunas de las ideas de Alexander para identificar una serie de patrones en la construccioacuten de interfaces de usuario (veacutease referencia [2] del cuadro Bibliografiacutea recomendada) Estos patrones se emplearon en el lenguaje SmallTalk (uno de los pioneros de los lenguajes orientados a objetos puros) y dieron lugar al conocidiacutesimo patroacuten ModeloVistaControlador En el antildeo 1994 Gamma Helm Vlissides y Jhonson (grupo de autores conocido como el Gof o pandilla de los cuatro) publicaron el libro que es considerado la Biblia de los patrones de disentildeo (veacutease referencia [3] del cuadro Bibliografiacutea recomendada) Este libro popularizoacute la idea de los patrones de disentildeo e introdujo la clasificacioacuten de patrones de disentildeo maacutes extendida en la actualidad A partir de este momento se produjo la explosioacuten del fenoacutemeno de los patrones de disentildeo Se han desarrollado patrones aplicables a diferentes niveles de la loacutegica de la aplicacioacuten como persistencia mensajeriacutea presentacioacuten etc El uacuteltimo movimiento parece ser el de los patrones para la creacioacuten de aplicaciones empresariales que tratan de cubrir todos los aspectos de un sistema empresarial En este sentido cabe destacar los trabajos de Martin Fowler(veacutease referencia [4] del cuadro Bibliografiacutea recomendada) o las publicaciones de Sun(veacutease referencia [5] del cuadro Bibliografiacutea recomendada) y Microsoft (veacutease referencia [6] del cuadro Bibliografiacutea recomendada) para mostrar coacutemo construir aplicaciones empresariales con sus plataformas de desarrollo Paralelamente al concepto de patroacuten ha ido surgiendo el concepto de Antipatroacuten Se basa en la idea de que con frecuencia resulta maacutes faacutecil aprender de los errores por lo que se trata de catalogar los errores maacutes frecuentes de anaacutelisis disentildeo y programacioacuten
Arriba Clasificacioacuten de los patrones de disentildeo Los patrones de disentildeo variacutean tanto en su granularidad como en su nivel de abstraccioacuten Puesto que existen numerosos patrones de disentildeo eacutestos se clasifican en categoriacuteas lo que facilita su aprendizaje y permite referirse a patrones similares mediante la familia a la que pertenecen En la obra del Gof(veacutease referencia [3] del cuadro Bibliografiacutea recomendada) se proponen las siguientes categoriacuteas Patrones de creacioacuten Esta categoriacutea agrupa a los patrones que proporcionan guiacuteas de coacutemo construir objetos cuando su creacioacuten implique la toma de una decisioacuten Esta decisioacuten puede ser baacutesicamente elegir queacute subclase dentro de una jerarquiacutea de herencia instanciar y queacute clase tiene la responsabilidad de su creacioacuten Patrones estructurales Los patrones de esta categoriacutea describen mecanismos geneacutericos para organizar diferentes clases de objetos entre siacute Patrones de comportamiento Estos patrones se utilizan para organizar gestionar y combinar el comportamiento de diferentes objetos A esta clasificacioacuten Mark Grand en su obra Patterns in Java (veacutease referencia [7] del cuadro Bibliografiacutea recomendada) antildeade la categoriacutea de Patrones fundamentales Seguacuten este autor esta categoriacutea engloba a patrones que aparecen con mucha frecuencia en el resto de patrones de mayor complejidad Comenzaremos nuestro repaso de los principales patrones de disentildeo por dos patrones de esta categoriacutea el patroacuten Interfaz y el patroacuten Delegacioacuten
Arriba
El patroacuten Interfaz Este patroacuten praacutecticamente aparece en el resto de patrones de disentildeo que vamos a ver a lo largo de esta serie de artiacuteculos por lo que con eacutel nos vamos a detener un poco maacutes Se utiliza cuando deseamos que una clase que hace uso de los servicios proporcionados por otras clases permanezca independiente de estas iquestQueacute ventajas obtenemos con ello Reduce el acoplamiento entre clases y evita la propagacioacuten de cambios iquestY coacutemo podemos implementar este patroacuten A traveacutes de la utilizacioacuten de interfaces Una interfaz define un contrato que deben cumplir una serie de clases independientemente de los detalles internos de implementacioacuten de cada una de eacutestas Se trata por tanto de un tipo especial de herencia denominado de interfaz Mediante la aplicacioacuten de este patroacuten de disentildeo podemos independizar una clase de otra que le presta servicios haciendo que no tenga una referencia a la clase que ofrece el servicio sino a la interfaz que define el contrato del servicio a prestar iquestCoacutemo podemos implementar este patroacuten de disentildeo con Visual Basic NET En VBNET podemos definir una interfaz de la siguiente manera Listado 01 - Interfaz definida en VBNET ------------------------------------------- Public Interface IEducado Sub diHola() Sub diAdios() End Interface -------------------------------------------
Diagrama de clases UML del patroacuten Interfaz
Esta interfaz define un comportamiento que podraacuten heredar otras clases a traveacutes de la herencia de interfaz En el listado 1 tenemos dos implementaciones de esta interfaz con VBNET En dicho ejemplo tenemos una interfaz IEducado que obliga a que todas las clases que la implementen tengan meacutetodos de saludo y despedida impresos por consola En el En el listado 2 vemos como la clase Educadolngles implementa estos meacutetodos en ingleacutes mientras que la clase EducadoEspantildeol los implementa en espantildeol Listado 02 - Clases que utilizan la interfaz IEducado ------------------------------------------- Public Class EducadoIngles Implements IEducado Friend Sub Hola() Implements IEducadodiHola ConsoleWriteLine(Hello) End Sub Friend Sub Adios() Implements IEducadodiAdios ConsoleWriteLine(Bye) End Sub End Class ------------------------------------------- Public Class EducadoEspantildeol Implements IEducado Friend Sub Hola() Implements IEducadodiHola ConsoleWriteLine(Hola) End Sub Friend Sub Adios() Implements IEducadodiAdios ConsoleWriteLine(Adios) End Sub End Class ------------------------------------------- Listado 03 - Forma baacutesica de utilizr el Interfaz IEducado ------------------------------------------- Public Sub ProbarInterfazFormaUno() Instanciar una clase DimoEnEspantildeol As New EducadoEspantildeol() definicion de la interfaz asignando una clase a la interfaz DimiMuyEduado As IEducado = oEnEspantildeol usando la interfaz iMuyEduadodiHola() iMuyEduadodiAdios() ------------------------------ asignar otra clase a la interfaz Instanciar una clase
DimoEnIngles As New EducadoIngles() asignar la clase a la interfaz iMuyEduado = oEnIngles usando la interfaz iMuyEduadodiHola() iMuyEduadodiAdios() ---------------- iMuyEduado = Nothing oEnEspantildeol = Nothing oEnIngles = Nothing End Sub ------------------------------------------- Supongamos que tenemos una clase encargada de interactuar con el usuario en un entorno de liacutenea de comandos saludaacutendolo al iniciar la sesioacuten y despidieacutendose al terminar Podemos independizar nuestra clase del idioma empleado haciendo que tenga una referencia a la interfaz educado Listado 04 - Clase que implementa la interfaz en el constructor ------------------------------------------- ------------------------------------------- Public Class HaceUsoInterfazEducado Dim iMuyEduado As IEducado Public Sub New(ByValUnObjetoIdioma As Object) definicion de la interfaz asignando una clase a la interfaz ctypeespor [Option Strict ON] iMuyEduado = CType(UnObjetoIdioma IEducado) End Sub Public Sub diHola() iMuyEduadodiHola() End Sub Public Sub diAdios() iMuyEduadodiAdios() End Sub End Class ------------------------------------------- En funcioacuten del idioma seleccionado por el usuario esta clase recibiraacute en su constructor una implementacioacuten u otra sin necesidad de modificar la clase que hace uso de los servicios ofrecidos por esta interfaz Es maacutes podemos seguir antildeadiendo soporte de nuevos idiomas creando nuevas implementaciones de la interfaz Listado 05 - Funcioacuten que utiliza la clase anterior [HaceUsoInterfazEducado] ------------------------------------------- Public Sub ProbarInterfazFormaDos() Instanciar una clase en funcioacuten del idioma a utilizar DimoEnEspantildeol As New EducadoEspantildeol() instanciar la clase que usa el interfaz DimoIEducado As New HaceUsoInterfazEducado(oEnEspantildeol) oIEducadodiHola() oIEducadodiAdios()
oIEducado = Nothing oEnEspantildeol = Nothing End Sub ------------------------------------------- Otros lenguajes maacutes antiguos como C++ o Visual Basic carecen de interfaces En su lugar ofrecen otra construccioacuten las clases abstractas tambieacuten presentes en Java y C En C++ una clase es abstracta cuando tiene uno de sus meacutetodos virtual El modificador virtual es similar al modificador abstract de Java y otros lenguajes En C++ definiriacuteamos el contrato de nuestra interfaz con una clase abstracta (que puede ser pura si todos sus meacutetodos son abstractos) y cada una de las implementaciones de la interfaz seriacutean clases que heredariacutean de eacutesta Incluso las uacuteltimas versiones de Visual Basic (5 y 6) antes de su sustitucioacuten por Visual Basic NET permitiacutean la definicioacuten de clases abstractas Para tal fin habiacutea que crear un moacutedulo de clase con el asistente visual del lenguaje y dar el valor PublicNoCreatable a la propiedad Instancing del moacutedulo Esto haciacutea que no se pudiese utilizar ni el operador new ni la funcioacuten CreateObject para obtener instancias de la clase Un moacutedulo podiacutea implementar esta interfaz mediante el uso de la palabra reservada implements
Arriba
El patroacuten Delegacioacuten La delegacioacuten consiste en un medio de extender y reutilizar la funcionalidad de una clase mediante la creacioacuten de otra clase que se la proporcione Todos los lenguajes orientados a objetos proporcionan mecanismos para implementar este patroacuten pues basta con antildeadir una nueva referencia a la clase que consume el servicio
Diagrama de clases UML del patroacuten Delegacioacuten
La importancia del patroacuten Delegacioacuten radica en que nos proporciona un mecanismo para decidir cuaacutendo debemos hacer que una clase herede de otra o cuando antildeadirle una referencia para utilizar sus servicios En nuestro ejemplo de la clase educada parece claro que hay que utilizar delegacioacuten Muchas veces la decisioacuten nos la da el sentido comuacuten (la regla de es un) mientras que otras veces habraacute que hacer un anaacutelisis del nuacutemero de herencias posibles En nuestro ejemplo antildeadiendo una referencia a la interfaz IEducado soacutelo crearemos una clase que consuma sus servicios mientras que si optamos por el mecanismo de la herencia tendriacuteamos que crear dos subclases una de EducadoIngles y otra de EducadoEspantildeol Ademaacutes conforme fuese creciendo el nuacutemero de implementaciones de IEducado habriacutea que ir aumentando el nuacutemero de herencias El listado siguiente se muestra la codificacioacuten en VBNET de este patroacuten Listado 06 - Patroacuten delegacioacuten (extracto del listado 4) ------------------------------------------- PublicClassHaceUsoInterfazEducado DimiMuyEduado As IEducado El coacutedigo completo de la clase esta en el listado 04 EndClass -------------------------------------------
Arriba
Patrones de creacioacuten Singleton
Una vez introducidos dos de los patrones de disentildeo fundamentales Interfaz y Delegacioacuten veremos un patroacuten del tipo creacional muy frecuente en la praacutectica el patroacuten de disentildeo Singleton Este patroacuten se utiliza cuando queremos garantizar que de una determinada clase soacutelo existe una instancia De esta forma todos los objetos que hagan uso de esa clase utilizaraacuten la misma instancia iquestCuaacutendo suele ser necesario aplicar un Singleton Cuando nos encontramos con clases que deben encargarse de gestionar un recurso bien sea externo (las conexiones a una base de datos por ejemplo) bien sea interno (informacioacuten de configuracioacuten global a nivel de sistema informacioacuten uacutenica para el contexto de la aplicacioacuten etc)
Gestor de conexiones con el patroacuten Singleton
iquestCoacutemo se implementa un Singleton En primer lugar se debe impedir que los clientes construyan instancias de la clase que se desea hacer Singleton Para ello lo normal es hacer su constructor privado Ademaacutes se debe hacer que dicha clase contenga una referencia estaacutetica a la uacutenica instancia de esa propia clase que puede existir En el mundo de la orientacioacuten a objetos se denomina estaacuteticas a aquellas propiedades y meacutetodos que son comunes de una clase y por tanto compartidas por todas sus instancias Por uacuteltimo se debe antildeadir al Singleton un meacutetodo puacuteblico y estaacutetico que devuelva la uacutenica referencia existente de esa clase En el listado siguiente vemos coacutemo implementar un Singleton en Visual BasicNET Listado 07 - Patroacuten de creacioacuten Singleton ------------------------------------------- PublicClassSingleton Variable que contiene la referencia a ESTA clase Private Shared m_Instance As Singleton = Nothing constructor privado Private Sub New() o hacer nada End Sub meacutetodo estaacutetico permite obtener la referencia de la clase siempre se devuelve la misma referencia Public Shared ReadOnly Property Instance() As Singleton Get If m_Instance Is Nothing Then m_Instance = New Singleton() End If Return m_Instance End Get End Property
EndClass ------------------------------------------- El patroacuten Singleton Asegura que solo se cree una instancia de la clase y provee un punto global de acceso a esta En el siguiente ejemplo crearemos una clase que inicialice y retorne un objeto conexioacuten si no existe y si ya existen que nos retorne la instancia existente El ejemplo estaacute escrito por Enriquillo Mantildeoacuten y lo encontre el dia 22122004 en la paacutegina siguiente httpwwwmicrosoftcomspanishmsdncomunidadmtjnetvoicesart151asp Listado 08 - Patroacuten de creacioacuten Singleton ------------------------------------------- Implementacioacuten del Patroacuten Singleton PublicClassConexion Objeto que contendraacute la instancia compartida Private Shared m_objConexion As Conexion Privatem_FechaCreacion As String El Mutex es una clase que proporciona NET FrameWork Con ella evitaremos que en un ambiente multithread se cree alguacuten tipo de conflicto Private Shared m_Mutex As New SystemThreadingMutex Private Sub New() m_FechaCreacion = DateTimeNowToString End Sub Este meacutetodo eliminaraacute la instancia ya existente Public Shared Sub KillInstance() m_objConexion = Nothing End Sub Este seraacute el meacutetodo que proporcionara el acceso A la instancia existente si no existe creara unanueva (meacutetodo Singleton) Public Shared Function GetInstance() As Conexion m_MutexWaitOne() If m_objConexion Is Nothing Then m_objConexion = New Conexion End If m_MutexReleaseMutex() Return m_objConexion EndFunction Propiedad que presenta la fecha y hora en que Fue creada la instancia PublicReadOnlyPropertyFechaCreada() As String Get Return m_FechaCreacion End Get End Property End Class ------------------------------------------- La implementacioacuten para probar nuestra clase es bastante sencilla para instanciarla
Listado 09 - Patroacuten de creacioacuten instanciarla ------------------------------------------- Try Dim objConexion As SingletonConexion objConexion = SingletonConexionGetInstance TextBox1Text amp= Instancia Creada el + objConexionFechaCreadaampvbCrLf Catch ex As Exception MessageBoxShow(exMessage) End Try ------------------------------------------- Y para inicializarla Listado 10 - Patroacuten de creacioacuten inicializarla ------------------------------------------- Try SingletonConexionKillInstance() TextBox1Text amp= InstanciaEliminada---- ampvbCrLf Catch ex As Exception MessageBoxShow(exMessage) End Try -------------------------------------------
Arriba
Para Saber Mas [1] A Pattern Language Towns Buildings Construction Christopher Alexander 1977 [2] Using Patterns Languages for Object-Oriented Programs Ward Cunningham Kent Beck 1987 [3] Desing Patterns Elements of Reusable Object Oriented Software Gamma Helm Vlissides y Jonson 1994 [4] Patterns Of Enterprise Application Architecture Martiacuten Fowler [5] Java Blueprints httpjavasuncomblueprintspatternscataloghtm [6] NET Enterprise Patterns httpmsdnmicrosoftcomarchitecturepatterns [7] Patterns in Java A Catalog of Reusable Design Patterns Illustrated with UML Mark Grand [8] Te Server Side En esta web encontraremos una seccion dedicada a patrones de disentildeo wwwtheserversidecom
Arriba
Referencia bibliograacutefica Este documento esta COPIADO en su totalidad de un articulo escrito por Aacutelvaro Zabala Ordoacutentildeez y fue publicado en la revista Soacutelo Programadores num 113 con el tiacutetulo Patrones de Disentildeo Un curso practico [I] El articulo original muestra ejemplos en varios lenguajes En esta COPIA los he sustituido por ejemplos escritos exclusivamente en Visual Basic NET y ademaacutes he modificado la redaccioacuten de los paacuterrafos que haciacutean referencia a los ejemplos en otros lenguajes al objeto de darle una coherencia al texto final
Usted aprenderaacute a Aplicar meacutetodos probados para crear adaptables confiables y
eficientes NET y aplicaciones de cliente inteligente Resolver problemas de programacioacuten complejos con los patrones de
disentildeo estaacutendar de la industria Entregar el coacutedigo libre de errores con el desarrollo basado en pruebas
en Visual Studio Cree capas arquitecturas de reutilizacioacuten y evitar la superposicioacuten
funcional Aplicar las mejores praacutecticas para el disentildeo de la clase mejor Simplificar y automatizar las tareas repetitivas
Beneficios del curso El conocimiento de la NET y las bibliotecas no es suficiente para desarrollar aplicaciones robustas patrones de disentildeo probado y las mejores praacutecticas extraiacutedas de la sabiduriacutea de los expertos que ayuda en la creacioacuten de aplicaciones sobre una base soacutelida Este curso proporciona los conocimientos necesarios para resolver los problemas del mundo real de desarrollo de software y ofrecer aplicaciones raacutepida y fiable iquestQuieacuten debe asistir arquitectos programadores y cualquier sistema de desarrollo NET experiencia de programacioacuten a nivel de curso 419 programacioacuten de C o Curso 503 Visual Basic de programacioacuten para NET se supone Manos a la formacioacuten Ganas experiencia en la implementacioacuten NET mejores praacutecticas y patrones de disentildeo Ejercicios completado en VB o C incluyen
La conciliacioacuten de diversos problemas de procesamiento con el patroacuten Estrategia
La simplificacioacuten de un sistema complejo con el patroacuten Fachada La explotacioacuten de Microsoft Entity Framework para acceso a datos y
actualizaciones Creacioacuten de un modelo de objetos de dominio de Negocios Construccioacuten de casos de prueba automatizado Estructuracioacuten de un interfaz de usuario comprobable con el patroacuten
Modelo Vista Controlador La captura y reutilizacioacuten de las pruebas dentro de Visual Studio
Contenido del curso 511
Introduccioacuten Codificacioacuten de las mejores praacutecticas Simplificacioacuten de software con patrones de disentildeo
Simplificacioacuten de programacioacuten complejos con probada patrones de disentildeo La aplicacioacuten de interfaces simples a complejos algoritmos
La unificacioacuten de interfaces de subsistemas para facilitar su uso y reutilizacioacuten
Aplicacioacuten del modelo de fachada Variando la funcionalidad mediante la programacioacuten de interfaces
Fechas del curso
Asistir a eventos destacoacute en persona o en liacutenea con LearningTreeAnyWareTM
Feb 8 hasta 11 Reston VA inscribirse
5to al 8vo 04 Toronto inscribirse
19 a 22 ab Boston (Waltham) inscribirse
04 26ta al 29o Nueva York inscribirse
10 al 13 mayo Los Angelesinscribirse
10 al 13 mayo Ottawa inscribirse
17 al 20 mayo Rockville MD inscribirse
Mayo 24-27 Chicago (Schaumburg) inscribirse
31 mayo a 3 junio Reston VA inscribirse
07 al 10 junio Nueva York inscribirse
Para inscripciones AnyWare por favor regiacutestrese al menos 10 diacuteas antes del inicio del curso Maacutes fechas y lugares En las instalaciones y Formacioacuten personalizada Llevar este o cualquier otro aacuterbol curso de aprendizaje a su ubicacioacuten o la han personalizado para su organizacioacuten Matriacutecula
$ 2890 Norma de matriacutecula
Matriacutecula con un Plan de Ahorro
$ 1700 Premium-Pass
1733 doacutelares Pasaporte de formacioacuten
$ 2250 Vale 10-Pack
$ 2573 Gobierno de descuento
$ 2600 Antiguos Alumnos de descuento de Oro
Alumni Gold Discount
Mejorar la adaptabilidad y la flexibilidad de su aplicacioacuten Explotar el patroacuten Estrategia
Ampliacioacuten de la conducta objeto de forma dinaacutemica El aumento de la funcionalidad sin afectar al coacutedigo existente Composicioacuten de objetos con el patroacuten Decorador
El logro de reutilizacioacuten y flexibilidad La eliminacioacuten de la duplicacioacuten de coacutedigo al esbozar las bases de un
algoritmo Empleando el modelo de plantilla Meacutetodo
Interfaz clases incompatibles La transformacioacuten de una interfaz para agregar valor a coacutedigo
existente Aprovechar el modelo del adaptador
La aplicacioacuten de teacutecnicas de desarrollo basado en pruebas Automatizar las pruebas unitarias
Acortar los ciclos de desarrollo de pruebas automatizadas Mejora de la calidad con una cobertura consistente de pruebas La eliminacioacuten de los errores de regresioacuten con las pruebas
reutilizables La integracioacuten de las pruebas y la codificacioacuten
La aplicacioacuten de la prueba praacutectica de programacioacuten de sesiones para conducir el disentildeo del coacutedigo
Generar retroalimentacioacuten inmediata luz verde para el aumento de la calidad del coacutedigo y los cortos ciclos de desarrollo de funciones
Organizar coordinar y ejecutar los casos de prueba con Visual Studio Arquitectura de una aplicacioacuten de capas Disentildeo de la arquitectura de aplicaciones
Capas arquitecturas de reutilizacioacuten durabilidad y capacidad de ampliacioacuten
Acceso a datos de la capa de negocio La disociacioacuten de creacioacuten de objetos con el patroacuten de la faacutebrica Preservar la identidad del objeto con el patroacuten de identidad Mapa
Programacioacuten niveles de la aplicacioacuten Estructuracioacuten de un cliente Web o de aplicaciones ricas con el
patroacuten Observer Organizador rico estado-aplicaciones con el modelo de Estado Reestructuracioacuten de las tablas de la base de datos sin afectar el
coacutedigo de la aplicacioacuten Modelado de un aacuterea de negocio
Libertador ricos Business Object modelos de las estructuras de base de datos utilizando el patroacuten de modelo de dominio
Cartografiacutea ricos Business Objects a las tablas de base de datos con el patroacuten Data Mapper
El colapso de las jerarquiacuteas de objetos de negocio con el patroacuten de herencia Mapper
La explotacioacuten de la programacioacuten declarativa en Microsoft Entity Framework para implementar clases de datos de cartografiacutea
Attend your first course and you will receive a personalized Alumni Gold Discount card entitling you to save as much as $320 on each course you take within the following 12 months
Alumni Gold Discount Attend your first course and you will receive a personalized Alumni Gold Discount card entitling you to save as much as $320 on each course you take within the following 12 months
Federal State and Local Government Federal State and Local Government employees can take advantage of government discount pricing for Learning Tree Courses
Federal State and Local Government Federal State and Local Government employees can take advantage of government discount pricing for Learning Tree Courses
Training Vouchers With Vouchers any members of your team can attend any Learning Tree Course anytime Available in 5- and 10-Course Packs or larger each Voucher is valid for 12 months and is used in lieu of the tuition for any Learning Tree Public Course
Training Vouchers With Vouchers any members of your team can attend any Learning Tree Course anytime Available in 5- and 10-Course Packs or larger each Voucher is valid for 12 months and is
La aplicacioacuten de Buenas Praacutecticas La organizacioacuten y la aplicacioacuten de la loacutegica de negocio
La aplicacioacuten de los patrones de dominio de la loacutegica en el nivel medio
Ampliacioacuten de tipos de entidad con clases parciales La manipulacioacuten de los grupos de entidades con las clases de loacutegica
de negocio Las mejores praacutecticas en el disentildeo de clase
Proteccioacuten contra la rigidez con el Abierto de Principio Cerrado La extraccioacuten de las nuevas clases con el Principio de Responsabilidad
Individual El uso eficaz de la herencia
Automatizar tareas repetitivas Facilitar los datos de coacutedigo de acceso
La reduccioacuten de la base de datos de coacutedigo de acceso mediante la explotacioacuten de la entidad de navegacioacuten Propiedades
La eliminacioacuten de coacutedigo de actualizacioacuten de base de datos con el cambio de entidad de seguimiento Mejorar el coacutedigo de aplicacioacuten
Automatizacioacuten de revisiones de disentildeo con FxCop y Visual Studio Anaacutelisis
La eliminacioacuten de la duplicacioacuten de coacutedigo a traveacutes de la refactorizacioacuten para los patrones de disentildeo
ltltVolver a Visual Studio y NET Listado de cursos Cursos relacionados
Construyendo Aplicaciones Web con ASPNET y Ajax - Curso 506 ASPNET WebForms Integral Introduccioacuten - Curso 512 Construyendo Aplicaciones Web con ASPNET MVC - Curso 977 NET 4 Programacioacuten - Curso 2620 WPF y Silverlight Introduccioacuten - Curso 975 Servicios Web NET Introduccioacuten - Curso 2601 De programacioacuten C extendido Caracteriacutesticas - Curso 973 Programacioacuten de aplicaciones con SharePoint 2010 - NET Curso 2615 Windows Azure - Curso 2602
used in lieu of the tuition for any Learning Tree Public Course
Training Passport As a Training Passport holder one person can take as many as three hands-on courses in 12 months for as little as $1733 per course Only $5200 - save as much as 45
Training Passport As a Training Passport holder one person can take as many as three hands-on courses in 12 months for as little as $1733 per course Only $5200 - save as much as 45
Premium Pass The NEW Premium Pass gives you more time to take more courses while saving more money Take 4 courses within 24 months for as little as $1700 per course mdash at a price of only $6790 you can SAVE as much as 45 per course
Premium Pass The NEW Premium Pass gives you more time to take more courses while saving more money Take 4 courses within 24 months for as little as $1700 per course mdash at a price of only $6790 you can SAVE as much as 45 per course
Arriba Clasificacioacuten de los patrones de disentildeo Los patrones de disentildeo variacutean tanto en su granularidad como en su nivel de abstraccioacuten Puesto que existen numerosos patrones de disentildeo eacutestos se clasifican en categoriacuteas lo que facilita su aprendizaje y permite referirse a patrones similares mediante la familia a la que pertenecen En la obra del Gof(veacutease referencia [3] del cuadro Bibliografiacutea recomendada) se proponen las siguientes categoriacuteas Patrones de creacioacuten Esta categoriacutea agrupa a los patrones que proporcionan guiacuteas de coacutemo construir objetos cuando su creacioacuten implique la toma de una decisioacuten Esta decisioacuten puede ser baacutesicamente elegir queacute subclase dentro de una jerarquiacutea de herencia instanciar y queacute clase tiene la responsabilidad de su creacioacuten Patrones estructurales Los patrones de esta categoriacutea describen mecanismos geneacutericos para organizar diferentes clases de objetos entre siacute Patrones de comportamiento Estos patrones se utilizan para organizar gestionar y combinar el comportamiento de diferentes objetos A esta clasificacioacuten Mark Grand en su obra Patterns in Java (veacutease referencia [7] del cuadro Bibliografiacutea recomendada) antildeade la categoriacutea de Patrones fundamentales Seguacuten este autor esta categoriacutea engloba a patrones que aparecen con mucha frecuencia en el resto de patrones de mayor complejidad Comenzaremos nuestro repaso de los principales patrones de disentildeo por dos patrones de esta categoriacutea el patroacuten Interfaz y el patroacuten Delegacioacuten
Arriba
El patroacuten Interfaz Este patroacuten praacutecticamente aparece en el resto de patrones de disentildeo que vamos a ver a lo largo de esta serie de artiacuteculos por lo que con eacutel nos vamos a detener un poco maacutes Se utiliza cuando deseamos que una clase que hace uso de los servicios proporcionados por otras clases permanezca independiente de estas iquestQueacute ventajas obtenemos con ello Reduce el acoplamiento entre clases y evita la propagacioacuten de cambios iquestY coacutemo podemos implementar este patroacuten A traveacutes de la utilizacioacuten de interfaces Una interfaz define un contrato que deben cumplir una serie de clases independientemente de los detalles internos de implementacioacuten de cada una de eacutestas Se trata por tanto de un tipo especial de herencia denominado de interfaz Mediante la aplicacioacuten de este patroacuten de disentildeo podemos independizar una clase de otra que le presta servicios haciendo que no tenga una referencia a la clase que ofrece el servicio sino a la interfaz que define el contrato del servicio a prestar iquestCoacutemo podemos implementar este patroacuten de disentildeo con Visual Basic NET En VBNET podemos definir una interfaz de la siguiente manera Listado 01 - Interfaz definida en VBNET ------------------------------------------- Public Interface IEducado Sub diHola() Sub diAdios() End Interface -------------------------------------------
Diagrama de clases UML del patroacuten Interfaz
Esta interfaz define un comportamiento que podraacuten heredar otras clases a traveacutes de la herencia de interfaz En el listado 1 tenemos dos implementaciones de esta interfaz con VBNET En dicho ejemplo tenemos una interfaz IEducado que obliga a que todas las clases que la implementen tengan meacutetodos de saludo y despedida impresos por consola En el En el listado 2 vemos como la clase Educadolngles implementa estos meacutetodos en ingleacutes mientras que la clase EducadoEspantildeol los implementa en espantildeol Listado 02 - Clases que utilizan la interfaz IEducado ------------------------------------------- Public Class EducadoIngles Implements IEducado Friend Sub Hola() Implements IEducadodiHola ConsoleWriteLine(Hello) End Sub Friend Sub Adios() Implements IEducadodiAdios ConsoleWriteLine(Bye) End Sub End Class ------------------------------------------- Public Class EducadoEspantildeol Implements IEducado Friend Sub Hola() Implements IEducadodiHola ConsoleWriteLine(Hola) End Sub Friend Sub Adios() Implements IEducadodiAdios ConsoleWriteLine(Adios) End Sub End Class ------------------------------------------- Listado 03 - Forma baacutesica de utilizr el Interfaz IEducado ------------------------------------------- Public Sub ProbarInterfazFormaUno() Instanciar una clase DimoEnEspantildeol As New EducadoEspantildeol() definicion de la interfaz asignando una clase a la interfaz DimiMuyEduado As IEducado = oEnEspantildeol usando la interfaz iMuyEduadodiHola() iMuyEduadodiAdios() ------------------------------ asignar otra clase a la interfaz Instanciar una clase
DimoEnIngles As New EducadoIngles() asignar la clase a la interfaz iMuyEduado = oEnIngles usando la interfaz iMuyEduadodiHola() iMuyEduadodiAdios() ---------------- iMuyEduado = Nothing oEnEspantildeol = Nothing oEnIngles = Nothing End Sub ------------------------------------------- Supongamos que tenemos una clase encargada de interactuar con el usuario en un entorno de liacutenea de comandos saludaacutendolo al iniciar la sesioacuten y despidieacutendose al terminar Podemos independizar nuestra clase del idioma empleado haciendo que tenga una referencia a la interfaz educado Listado 04 - Clase que implementa la interfaz en el constructor ------------------------------------------- ------------------------------------------- Public Class HaceUsoInterfazEducado Dim iMuyEduado As IEducado Public Sub New(ByValUnObjetoIdioma As Object) definicion de la interfaz asignando una clase a la interfaz ctypeespor [Option Strict ON] iMuyEduado = CType(UnObjetoIdioma IEducado) End Sub Public Sub diHola() iMuyEduadodiHola() End Sub Public Sub diAdios() iMuyEduadodiAdios() End Sub End Class ------------------------------------------- En funcioacuten del idioma seleccionado por el usuario esta clase recibiraacute en su constructor una implementacioacuten u otra sin necesidad de modificar la clase que hace uso de los servicios ofrecidos por esta interfaz Es maacutes podemos seguir antildeadiendo soporte de nuevos idiomas creando nuevas implementaciones de la interfaz Listado 05 - Funcioacuten que utiliza la clase anterior [HaceUsoInterfazEducado] ------------------------------------------- Public Sub ProbarInterfazFormaDos() Instanciar una clase en funcioacuten del idioma a utilizar DimoEnEspantildeol As New EducadoEspantildeol() instanciar la clase que usa el interfaz DimoIEducado As New HaceUsoInterfazEducado(oEnEspantildeol) oIEducadodiHola() oIEducadodiAdios()
oIEducado = Nothing oEnEspantildeol = Nothing End Sub ------------------------------------------- Otros lenguajes maacutes antiguos como C++ o Visual Basic carecen de interfaces En su lugar ofrecen otra construccioacuten las clases abstractas tambieacuten presentes en Java y C En C++ una clase es abstracta cuando tiene uno de sus meacutetodos virtual El modificador virtual es similar al modificador abstract de Java y otros lenguajes En C++ definiriacuteamos el contrato de nuestra interfaz con una clase abstracta (que puede ser pura si todos sus meacutetodos son abstractos) y cada una de las implementaciones de la interfaz seriacutean clases que heredariacutean de eacutesta Incluso las uacuteltimas versiones de Visual Basic (5 y 6) antes de su sustitucioacuten por Visual Basic NET permitiacutean la definicioacuten de clases abstractas Para tal fin habiacutea que crear un moacutedulo de clase con el asistente visual del lenguaje y dar el valor PublicNoCreatable a la propiedad Instancing del moacutedulo Esto haciacutea que no se pudiese utilizar ni el operador new ni la funcioacuten CreateObject para obtener instancias de la clase Un moacutedulo podiacutea implementar esta interfaz mediante el uso de la palabra reservada implements
Arriba
El patroacuten Delegacioacuten La delegacioacuten consiste en un medio de extender y reutilizar la funcionalidad de una clase mediante la creacioacuten de otra clase que se la proporcione Todos los lenguajes orientados a objetos proporcionan mecanismos para implementar este patroacuten pues basta con antildeadir una nueva referencia a la clase que consume el servicio
Diagrama de clases UML del patroacuten Delegacioacuten
La importancia del patroacuten Delegacioacuten radica en que nos proporciona un mecanismo para decidir cuaacutendo debemos hacer que una clase herede de otra o cuando antildeadirle una referencia para utilizar sus servicios En nuestro ejemplo de la clase educada parece claro que hay que utilizar delegacioacuten Muchas veces la decisioacuten nos la da el sentido comuacuten (la regla de es un) mientras que otras veces habraacute que hacer un anaacutelisis del nuacutemero de herencias posibles En nuestro ejemplo antildeadiendo una referencia a la interfaz IEducado soacutelo crearemos una clase que consuma sus servicios mientras que si optamos por el mecanismo de la herencia tendriacuteamos que crear dos subclases una de EducadoIngles y otra de EducadoEspantildeol Ademaacutes conforme fuese creciendo el nuacutemero de implementaciones de IEducado habriacutea que ir aumentando el nuacutemero de herencias El listado siguiente se muestra la codificacioacuten en VBNET de este patroacuten Listado 06 - Patroacuten delegacioacuten (extracto del listado 4) ------------------------------------------- PublicClassHaceUsoInterfazEducado DimiMuyEduado As IEducado El coacutedigo completo de la clase esta en el listado 04 EndClass -------------------------------------------
Arriba
Patrones de creacioacuten Singleton
Una vez introducidos dos de los patrones de disentildeo fundamentales Interfaz y Delegacioacuten veremos un patroacuten del tipo creacional muy frecuente en la praacutectica el patroacuten de disentildeo Singleton Este patroacuten se utiliza cuando queremos garantizar que de una determinada clase soacutelo existe una instancia De esta forma todos los objetos que hagan uso de esa clase utilizaraacuten la misma instancia iquestCuaacutendo suele ser necesario aplicar un Singleton Cuando nos encontramos con clases que deben encargarse de gestionar un recurso bien sea externo (las conexiones a una base de datos por ejemplo) bien sea interno (informacioacuten de configuracioacuten global a nivel de sistema informacioacuten uacutenica para el contexto de la aplicacioacuten etc)
Gestor de conexiones con el patroacuten Singleton
iquestCoacutemo se implementa un Singleton En primer lugar se debe impedir que los clientes construyan instancias de la clase que se desea hacer Singleton Para ello lo normal es hacer su constructor privado Ademaacutes se debe hacer que dicha clase contenga una referencia estaacutetica a la uacutenica instancia de esa propia clase que puede existir En el mundo de la orientacioacuten a objetos se denomina estaacuteticas a aquellas propiedades y meacutetodos que son comunes de una clase y por tanto compartidas por todas sus instancias Por uacuteltimo se debe antildeadir al Singleton un meacutetodo puacuteblico y estaacutetico que devuelva la uacutenica referencia existente de esa clase En el listado siguiente vemos coacutemo implementar un Singleton en Visual BasicNET Listado 07 - Patroacuten de creacioacuten Singleton ------------------------------------------- PublicClassSingleton Variable que contiene la referencia a ESTA clase Private Shared m_Instance As Singleton = Nothing constructor privado Private Sub New() o hacer nada End Sub meacutetodo estaacutetico permite obtener la referencia de la clase siempre se devuelve la misma referencia Public Shared ReadOnly Property Instance() As Singleton Get If m_Instance Is Nothing Then m_Instance = New Singleton() End If Return m_Instance End Get End Property
EndClass ------------------------------------------- El patroacuten Singleton Asegura que solo se cree una instancia de la clase y provee un punto global de acceso a esta En el siguiente ejemplo crearemos una clase que inicialice y retorne un objeto conexioacuten si no existe y si ya existen que nos retorne la instancia existente El ejemplo estaacute escrito por Enriquillo Mantildeoacuten y lo encontre el dia 22122004 en la paacutegina siguiente httpwwwmicrosoftcomspanishmsdncomunidadmtjnetvoicesart151asp Listado 08 - Patroacuten de creacioacuten Singleton ------------------------------------------- Implementacioacuten del Patroacuten Singleton PublicClassConexion Objeto que contendraacute la instancia compartida Private Shared m_objConexion As Conexion Privatem_FechaCreacion As String El Mutex es una clase que proporciona NET FrameWork Con ella evitaremos que en un ambiente multithread se cree alguacuten tipo de conflicto Private Shared m_Mutex As New SystemThreadingMutex Private Sub New() m_FechaCreacion = DateTimeNowToString End Sub Este meacutetodo eliminaraacute la instancia ya existente Public Shared Sub KillInstance() m_objConexion = Nothing End Sub Este seraacute el meacutetodo que proporcionara el acceso A la instancia existente si no existe creara unanueva (meacutetodo Singleton) Public Shared Function GetInstance() As Conexion m_MutexWaitOne() If m_objConexion Is Nothing Then m_objConexion = New Conexion End If m_MutexReleaseMutex() Return m_objConexion EndFunction Propiedad que presenta la fecha y hora en que Fue creada la instancia PublicReadOnlyPropertyFechaCreada() As String Get Return m_FechaCreacion End Get End Property End Class ------------------------------------------- La implementacioacuten para probar nuestra clase es bastante sencilla para instanciarla
Listado 09 - Patroacuten de creacioacuten instanciarla ------------------------------------------- Try Dim objConexion As SingletonConexion objConexion = SingletonConexionGetInstance TextBox1Text amp= Instancia Creada el + objConexionFechaCreadaampvbCrLf Catch ex As Exception MessageBoxShow(exMessage) End Try ------------------------------------------- Y para inicializarla Listado 10 - Patroacuten de creacioacuten inicializarla ------------------------------------------- Try SingletonConexionKillInstance() TextBox1Text amp= InstanciaEliminada---- ampvbCrLf Catch ex As Exception MessageBoxShow(exMessage) End Try -------------------------------------------
Arriba
Para Saber Mas [1] A Pattern Language Towns Buildings Construction Christopher Alexander 1977 [2] Using Patterns Languages for Object-Oriented Programs Ward Cunningham Kent Beck 1987 [3] Desing Patterns Elements of Reusable Object Oriented Software Gamma Helm Vlissides y Jonson 1994 [4] Patterns Of Enterprise Application Architecture Martiacuten Fowler [5] Java Blueprints httpjavasuncomblueprintspatternscataloghtm [6] NET Enterprise Patterns httpmsdnmicrosoftcomarchitecturepatterns [7] Patterns in Java A Catalog of Reusable Design Patterns Illustrated with UML Mark Grand [8] Te Server Side En esta web encontraremos una seccion dedicada a patrones de disentildeo wwwtheserversidecom
Arriba
Referencia bibliograacutefica Este documento esta COPIADO en su totalidad de un articulo escrito por Aacutelvaro Zabala Ordoacutentildeez y fue publicado en la revista Soacutelo Programadores num 113 con el tiacutetulo Patrones de Disentildeo Un curso practico [I] El articulo original muestra ejemplos en varios lenguajes En esta COPIA los he sustituido por ejemplos escritos exclusivamente en Visual Basic NET y ademaacutes he modificado la redaccioacuten de los paacuterrafos que haciacutean referencia a los ejemplos en otros lenguajes al objeto de darle una coherencia al texto final
Usted aprenderaacute a Aplicar meacutetodos probados para crear adaptables confiables y
eficientes NET y aplicaciones de cliente inteligente Resolver problemas de programacioacuten complejos con los patrones de
disentildeo estaacutendar de la industria Entregar el coacutedigo libre de errores con el desarrollo basado en pruebas
en Visual Studio Cree capas arquitecturas de reutilizacioacuten y evitar la superposicioacuten
funcional Aplicar las mejores praacutecticas para el disentildeo de la clase mejor Simplificar y automatizar las tareas repetitivas
Beneficios del curso El conocimiento de la NET y las bibliotecas no es suficiente para desarrollar aplicaciones robustas patrones de disentildeo probado y las mejores praacutecticas extraiacutedas de la sabiduriacutea de los expertos que ayuda en la creacioacuten de aplicaciones sobre una base soacutelida Este curso proporciona los conocimientos necesarios para resolver los problemas del mundo real de desarrollo de software y ofrecer aplicaciones raacutepida y fiable iquestQuieacuten debe asistir arquitectos programadores y cualquier sistema de desarrollo NET experiencia de programacioacuten a nivel de curso 419 programacioacuten de C o Curso 503 Visual Basic de programacioacuten para NET se supone Manos a la formacioacuten Ganas experiencia en la implementacioacuten NET mejores praacutecticas y patrones de disentildeo Ejercicios completado en VB o C incluyen
La conciliacioacuten de diversos problemas de procesamiento con el patroacuten Estrategia
La simplificacioacuten de un sistema complejo con el patroacuten Fachada La explotacioacuten de Microsoft Entity Framework para acceso a datos y
actualizaciones Creacioacuten de un modelo de objetos de dominio de Negocios Construccioacuten de casos de prueba automatizado Estructuracioacuten de un interfaz de usuario comprobable con el patroacuten
Modelo Vista Controlador La captura y reutilizacioacuten de las pruebas dentro de Visual Studio
Contenido del curso 511
Introduccioacuten Codificacioacuten de las mejores praacutecticas Simplificacioacuten de software con patrones de disentildeo
Simplificacioacuten de programacioacuten complejos con probada patrones de disentildeo La aplicacioacuten de interfaces simples a complejos algoritmos
La unificacioacuten de interfaces de subsistemas para facilitar su uso y reutilizacioacuten
Aplicacioacuten del modelo de fachada Variando la funcionalidad mediante la programacioacuten de interfaces
Fechas del curso
Asistir a eventos destacoacute en persona o en liacutenea con LearningTreeAnyWareTM
Feb 8 hasta 11 Reston VA inscribirse
5to al 8vo 04 Toronto inscribirse
19 a 22 ab Boston (Waltham) inscribirse
04 26ta al 29o Nueva York inscribirse
10 al 13 mayo Los Angelesinscribirse
10 al 13 mayo Ottawa inscribirse
17 al 20 mayo Rockville MD inscribirse
Mayo 24-27 Chicago (Schaumburg) inscribirse
31 mayo a 3 junio Reston VA inscribirse
07 al 10 junio Nueva York inscribirse
Para inscripciones AnyWare por favor regiacutestrese al menos 10 diacuteas antes del inicio del curso Maacutes fechas y lugares En las instalaciones y Formacioacuten personalizada Llevar este o cualquier otro aacuterbol curso de aprendizaje a su ubicacioacuten o la han personalizado para su organizacioacuten Matriacutecula
$ 2890 Norma de matriacutecula
Matriacutecula con un Plan de Ahorro
$ 1700 Premium-Pass
1733 doacutelares Pasaporte de formacioacuten
$ 2250 Vale 10-Pack
$ 2573 Gobierno de descuento
$ 2600 Antiguos Alumnos de descuento de Oro
Alumni Gold Discount
Mejorar la adaptabilidad y la flexibilidad de su aplicacioacuten Explotar el patroacuten Estrategia
Ampliacioacuten de la conducta objeto de forma dinaacutemica El aumento de la funcionalidad sin afectar al coacutedigo existente Composicioacuten de objetos con el patroacuten Decorador
El logro de reutilizacioacuten y flexibilidad La eliminacioacuten de la duplicacioacuten de coacutedigo al esbozar las bases de un
algoritmo Empleando el modelo de plantilla Meacutetodo
Interfaz clases incompatibles La transformacioacuten de una interfaz para agregar valor a coacutedigo
existente Aprovechar el modelo del adaptador
La aplicacioacuten de teacutecnicas de desarrollo basado en pruebas Automatizar las pruebas unitarias
Acortar los ciclos de desarrollo de pruebas automatizadas Mejora de la calidad con una cobertura consistente de pruebas La eliminacioacuten de los errores de regresioacuten con las pruebas
reutilizables La integracioacuten de las pruebas y la codificacioacuten
La aplicacioacuten de la prueba praacutectica de programacioacuten de sesiones para conducir el disentildeo del coacutedigo
Generar retroalimentacioacuten inmediata luz verde para el aumento de la calidad del coacutedigo y los cortos ciclos de desarrollo de funciones
Organizar coordinar y ejecutar los casos de prueba con Visual Studio Arquitectura de una aplicacioacuten de capas Disentildeo de la arquitectura de aplicaciones
Capas arquitecturas de reutilizacioacuten durabilidad y capacidad de ampliacioacuten
Acceso a datos de la capa de negocio La disociacioacuten de creacioacuten de objetos con el patroacuten de la faacutebrica Preservar la identidad del objeto con el patroacuten de identidad Mapa
Programacioacuten niveles de la aplicacioacuten Estructuracioacuten de un cliente Web o de aplicaciones ricas con el
patroacuten Observer Organizador rico estado-aplicaciones con el modelo de Estado Reestructuracioacuten de las tablas de la base de datos sin afectar el
coacutedigo de la aplicacioacuten Modelado de un aacuterea de negocio
Libertador ricos Business Object modelos de las estructuras de base de datos utilizando el patroacuten de modelo de dominio
Cartografiacutea ricos Business Objects a las tablas de base de datos con el patroacuten Data Mapper
El colapso de las jerarquiacuteas de objetos de negocio con el patroacuten de herencia Mapper
La explotacioacuten de la programacioacuten declarativa en Microsoft Entity Framework para implementar clases de datos de cartografiacutea
Attend your first course and you will receive a personalized Alumni Gold Discount card entitling you to save as much as $320 on each course you take within the following 12 months
Alumni Gold Discount Attend your first course and you will receive a personalized Alumni Gold Discount card entitling you to save as much as $320 on each course you take within the following 12 months
Federal State and Local Government Federal State and Local Government employees can take advantage of government discount pricing for Learning Tree Courses
Federal State and Local Government Federal State and Local Government employees can take advantage of government discount pricing for Learning Tree Courses
Training Vouchers With Vouchers any members of your team can attend any Learning Tree Course anytime Available in 5- and 10-Course Packs or larger each Voucher is valid for 12 months and is used in lieu of the tuition for any Learning Tree Public Course
Training Vouchers With Vouchers any members of your team can attend any Learning Tree Course anytime Available in 5- and 10-Course Packs or larger each Voucher is valid for 12 months and is
La aplicacioacuten de Buenas Praacutecticas La organizacioacuten y la aplicacioacuten de la loacutegica de negocio
La aplicacioacuten de los patrones de dominio de la loacutegica en el nivel medio
Ampliacioacuten de tipos de entidad con clases parciales La manipulacioacuten de los grupos de entidades con las clases de loacutegica
de negocio Las mejores praacutecticas en el disentildeo de clase
Proteccioacuten contra la rigidez con el Abierto de Principio Cerrado La extraccioacuten de las nuevas clases con el Principio de Responsabilidad
Individual El uso eficaz de la herencia
Automatizar tareas repetitivas Facilitar los datos de coacutedigo de acceso
La reduccioacuten de la base de datos de coacutedigo de acceso mediante la explotacioacuten de la entidad de navegacioacuten Propiedades
La eliminacioacuten de coacutedigo de actualizacioacuten de base de datos con el cambio de entidad de seguimiento Mejorar el coacutedigo de aplicacioacuten
Automatizacioacuten de revisiones de disentildeo con FxCop y Visual Studio Anaacutelisis
La eliminacioacuten de la duplicacioacuten de coacutedigo a traveacutes de la refactorizacioacuten para los patrones de disentildeo
ltltVolver a Visual Studio y NET Listado de cursos Cursos relacionados
Construyendo Aplicaciones Web con ASPNET y Ajax - Curso 506 ASPNET WebForms Integral Introduccioacuten - Curso 512 Construyendo Aplicaciones Web con ASPNET MVC - Curso 977 NET 4 Programacioacuten - Curso 2620 WPF y Silverlight Introduccioacuten - Curso 975 Servicios Web NET Introduccioacuten - Curso 2601 De programacioacuten C extendido Caracteriacutesticas - Curso 973 Programacioacuten de aplicaciones con SharePoint 2010 - NET Curso 2615 Windows Azure - Curso 2602
used in lieu of the tuition for any Learning Tree Public Course
Training Passport As a Training Passport holder one person can take as many as three hands-on courses in 12 months for as little as $1733 per course Only $5200 - save as much as 45
Training Passport As a Training Passport holder one person can take as many as three hands-on courses in 12 months for as little as $1733 per course Only $5200 - save as much as 45
Premium Pass The NEW Premium Pass gives you more time to take more courses while saving more money Take 4 courses within 24 months for as little as $1700 per course mdash at a price of only $6790 you can SAVE as much as 45 per course
Premium Pass The NEW Premium Pass gives you more time to take more courses while saving more money Take 4 courses within 24 months for as little as $1700 per course mdash at a price of only $6790 you can SAVE as much as 45 per course
Diagrama de clases UML del patroacuten Interfaz
Esta interfaz define un comportamiento que podraacuten heredar otras clases a traveacutes de la herencia de interfaz En el listado 1 tenemos dos implementaciones de esta interfaz con VBNET En dicho ejemplo tenemos una interfaz IEducado que obliga a que todas las clases que la implementen tengan meacutetodos de saludo y despedida impresos por consola En el En el listado 2 vemos como la clase Educadolngles implementa estos meacutetodos en ingleacutes mientras que la clase EducadoEspantildeol los implementa en espantildeol Listado 02 - Clases que utilizan la interfaz IEducado ------------------------------------------- Public Class EducadoIngles Implements IEducado Friend Sub Hola() Implements IEducadodiHola ConsoleWriteLine(Hello) End Sub Friend Sub Adios() Implements IEducadodiAdios ConsoleWriteLine(Bye) End Sub End Class ------------------------------------------- Public Class EducadoEspantildeol Implements IEducado Friend Sub Hola() Implements IEducadodiHola ConsoleWriteLine(Hola) End Sub Friend Sub Adios() Implements IEducadodiAdios ConsoleWriteLine(Adios) End Sub End Class ------------------------------------------- Listado 03 - Forma baacutesica de utilizr el Interfaz IEducado ------------------------------------------- Public Sub ProbarInterfazFormaUno() Instanciar una clase DimoEnEspantildeol As New EducadoEspantildeol() definicion de la interfaz asignando una clase a la interfaz DimiMuyEduado As IEducado = oEnEspantildeol usando la interfaz iMuyEduadodiHola() iMuyEduadodiAdios() ------------------------------ asignar otra clase a la interfaz Instanciar una clase
DimoEnIngles As New EducadoIngles() asignar la clase a la interfaz iMuyEduado = oEnIngles usando la interfaz iMuyEduadodiHola() iMuyEduadodiAdios() ---------------- iMuyEduado = Nothing oEnEspantildeol = Nothing oEnIngles = Nothing End Sub ------------------------------------------- Supongamos que tenemos una clase encargada de interactuar con el usuario en un entorno de liacutenea de comandos saludaacutendolo al iniciar la sesioacuten y despidieacutendose al terminar Podemos independizar nuestra clase del idioma empleado haciendo que tenga una referencia a la interfaz educado Listado 04 - Clase que implementa la interfaz en el constructor ------------------------------------------- ------------------------------------------- Public Class HaceUsoInterfazEducado Dim iMuyEduado As IEducado Public Sub New(ByValUnObjetoIdioma As Object) definicion de la interfaz asignando una clase a la interfaz ctypeespor [Option Strict ON] iMuyEduado = CType(UnObjetoIdioma IEducado) End Sub Public Sub diHola() iMuyEduadodiHola() End Sub Public Sub diAdios() iMuyEduadodiAdios() End Sub End Class ------------------------------------------- En funcioacuten del idioma seleccionado por el usuario esta clase recibiraacute en su constructor una implementacioacuten u otra sin necesidad de modificar la clase que hace uso de los servicios ofrecidos por esta interfaz Es maacutes podemos seguir antildeadiendo soporte de nuevos idiomas creando nuevas implementaciones de la interfaz Listado 05 - Funcioacuten que utiliza la clase anterior [HaceUsoInterfazEducado] ------------------------------------------- Public Sub ProbarInterfazFormaDos() Instanciar una clase en funcioacuten del idioma a utilizar DimoEnEspantildeol As New EducadoEspantildeol() instanciar la clase que usa el interfaz DimoIEducado As New HaceUsoInterfazEducado(oEnEspantildeol) oIEducadodiHola() oIEducadodiAdios()
oIEducado = Nothing oEnEspantildeol = Nothing End Sub ------------------------------------------- Otros lenguajes maacutes antiguos como C++ o Visual Basic carecen de interfaces En su lugar ofrecen otra construccioacuten las clases abstractas tambieacuten presentes en Java y C En C++ una clase es abstracta cuando tiene uno de sus meacutetodos virtual El modificador virtual es similar al modificador abstract de Java y otros lenguajes En C++ definiriacuteamos el contrato de nuestra interfaz con una clase abstracta (que puede ser pura si todos sus meacutetodos son abstractos) y cada una de las implementaciones de la interfaz seriacutean clases que heredariacutean de eacutesta Incluso las uacuteltimas versiones de Visual Basic (5 y 6) antes de su sustitucioacuten por Visual Basic NET permitiacutean la definicioacuten de clases abstractas Para tal fin habiacutea que crear un moacutedulo de clase con el asistente visual del lenguaje y dar el valor PublicNoCreatable a la propiedad Instancing del moacutedulo Esto haciacutea que no se pudiese utilizar ni el operador new ni la funcioacuten CreateObject para obtener instancias de la clase Un moacutedulo podiacutea implementar esta interfaz mediante el uso de la palabra reservada implements
Arriba
El patroacuten Delegacioacuten La delegacioacuten consiste en un medio de extender y reutilizar la funcionalidad de una clase mediante la creacioacuten de otra clase que se la proporcione Todos los lenguajes orientados a objetos proporcionan mecanismos para implementar este patroacuten pues basta con antildeadir una nueva referencia a la clase que consume el servicio
Diagrama de clases UML del patroacuten Delegacioacuten
La importancia del patroacuten Delegacioacuten radica en que nos proporciona un mecanismo para decidir cuaacutendo debemos hacer que una clase herede de otra o cuando antildeadirle una referencia para utilizar sus servicios En nuestro ejemplo de la clase educada parece claro que hay que utilizar delegacioacuten Muchas veces la decisioacuten nos la da el sentido comuacuten (la regla de es un) mientras que otras veces habraacute que hacer un anaacutelisis del nuacutemero de herencias posibles En nuestro ejemplo antildeadiendo una referencia a la interfaz IEducado soacutelo crearemos una clase que consuma sus servicios mientras que si optamos por el mecanismo de la herencia tendriacuteamos que crear dos subclases una de EducadoIngles y otra de EducadoEspantildeol Ademaacutes conforme fuese creciendo el nuacutemero de implementaciones de IEducado habriacutea que ir aumentando el nuacutemero de herencias El listado siguiente se muestra la codificacioacuten en VBNET de este patroacuten Listado 06 - Patroacuten delegacioacuten (extracto del listado 4) ------------------------------------------- PublicClassHaceUsoInterfazEducado DimiMuyEduado As IEducado El coacutedigo completo de la clase esta en el listado 04 EndClass -------------------------------------------
Arriba
Patrones de creacioacuten Singleton
Una vez introducidos dos de los patrones de disentildeo fundamentales Interfaz y Delegacioacuten veremos un patroacuten del tipo creacional muy frecuente en la praacutectica el patroacuten de disentildeo Singleton Este patroacuten se utiliza cuando queremos garantizar que de una determinada clase soacutelo existe una instancia De esta forma todos los objetos que hagan uso de esa clase utilizaraacuten la misma instancia iquestCuaacutendo suele ser necesario aplicar un Singleton Cuando nos encontramos con clases que deben encargarse de gestionar un recurso bien sea externo (las conexiones a una base de datos por ejemplo) bien sea interno (informacioacuten de configuracioacuten global a nivel de sistema informacioacuten uacutenica para el contexto de la aplicacioacuten etc)
Gestor de conexiones con el patroacuten Singleton
iquestCoacutemo se implementa un Singleton En primer lugar se debe impedir que los clientes construyan instancias de la clase que se desea hacer Singleton Para ello lo normal es hacer su constructor privado Ademaacutes se debe hacer que dicha clase contenga una referencia estaacutetica a la uacutenica instancia de esa propia clase que puede existir En el mundo de la orientacioacuten a objetos se denomina estaacuteticas a aquellas propiedades y meacutetodos que son comunes de una clase y por tanto compartidas por todas sus instancias Por uacuteltimo se debe antildeadir al Singleton un meacutetodo puacuteblico y estaacutetico que devuelva la uacutenica referencia existente de esa clase En el listado siguiente vemos coacutemo implementar un Singleton en Visual BasicNET Listado 07 - Patroacuten de creacioacuten Singleton ------------------------------------------- PublicClassSingleton Variable que contiene la referencia a ESTA clase Private Shared m_Instance As Singleton = Nothing constructor privado Private Sub New() o hacer nada End Sub meacutetodo estaacutetico permite obtener la referencia de la clase siempre se devuelve la misma referencia Public Shared ReadOnly Property Instance() As Singleton Get If m_Instance Is Nothing Then m_Instance = New Singleton() End If Return m_Instance End Get End Property
EndClass ------------------------------------------- El patroacuten Singleton Asegura que solo se cree una instancia de la clase y provee un punto global de acceso a esta En el siguiente ejemplo crearemos una clase que inicialice y retorne un objeto conexioacuten si no existe y si ya existen que nos retorne la instancia existente El ejemplo estaacute escrito por Enriquillo Mantildeoacuten y lo encontre el dia 22122004 en la paacutegina siguiente httpwwwmicrosoftcomspanishmsdncomunidadmtjnetvoicesart151asp Listado 08 - Patroacuten de creacioacuten Singleton ------------------------------------------- Implementacioacuten del Patroacuten Singleton PublicClassConexion Objeto que contendraacute la instancia compartida Private Shared m_objConexion As Conexion Privatem_FechaCreacion As String El Mutex es una clase que proporciona NET FrameWork Con ella evitaremos que en un ambiente multithread se cree alguacuten tipo de conflicto Private Shared m_Mutex As New SystemThreadingMutex Private Sub New() m_FechaCreacion = DateTimeNowToString End Sub Este meacutetodo eliminaraacute la instancia ya existente Public Shared Sub KillInstance() m_objConexion = Nothing End Sub Este seraacute el meacutetodo que proporcionara el acceso A la instancia existente si no existe creara unanueva (meacutetodo Singleton) Public Shared Function GetInstance() As Conexion m_MutexWaitOne() If m_objConexion Is Nothing Then m_objConexion = New Conexion End If m_MutexReleaseMutex() Return m_objConexion EndFunction Propiedad que presenta la fecha y hora en que Fue creada la instancia PublicReadOnlyPropertyFechaCreada() As String Get Return m_FechaCreacion End Get End Property End Class ------------------------------------------- La implementacioacuten para probar nuestra clase es bastante sencilla para instanciarla
Listado 09 - Patroacuten de creacioacuten instanciarla ------------------------------------------- Try Dim objConexion As SingletonConexion objConexion = SingletonConexionGetInstance TextBox1Text amp= Instancia Creada el + objConexionFechaCreadaampvbCrLf Catch ex As Exception MessageBoxShow(exMessage) End Try ------------------------------------------- Y para inicializarla Listado 10 - Patroacuten de creacioacuten inicializarla ------------------------------------------- Try SingletonConexionKillInstance() TextBox1Text amp= InstanciaEliminada---- ampvbCrLf Catch ex As Exception MessageBoxShow(exMessage) End Try -------------------------------------------
Arriba
Para Saber Mas [1] A Pattern Language Towns Buildings Construction Christopher Alexander 1977 [2] Using Patterns Languages for Object-Oriented Programs Ward Cunningham Kent Beck 1987 [3] Desing Patterns Elements of Reusable Object Oriented Software Gamma Helm Vlissides y Jonson 1994 [4] Patterns Of Enterprise Application Architecture Martiacuten Fowler [5] Java Blueprints httpjavasuncomblueprintspatternscataloghtm [6] NET Enterprise Patterns httpmsdnmicrosoftcomarchitecturepatterns [7] Patterns in Java A Catalog of Reusable Design Patterns Illustrated with UML Mark Grand [8] Te Server Side En esta web encontraremos una seccion dedicada a patrones de disentildeo wwwtheserversidecom
Arriba
Referencia bibliograacutefica Este documento esta COPIADO en su totalidad de un articulo escrito por Aacutelvaro Zabala Ordoacutentildeez y fue publicado en la revista Soacutelo Programadores num 113 con el tiacutetulo Patrones de Disentildeo Un curso practico [I] El articulo original muestra ejemplos en varios lenguajes En esta COPIA los he sustituido por ejemplos escritos exclusivamente en Visual Basic NET y ademaacutes he modificado la redaccioacuten de los paacuterrafos que haciacutean referencia a los ejemplos en otros lenguajes al objeto de darle una coherencia al texto final
Usted aprenderaacute a Aplicar meacutetodos probados para crear adaptables confiables y
eficientes NET y aplicaciones de cliente inteligente Resolver problemas de programacioacuten complejos con los patrones de
disentildeo estaacutendar de la industria Entregar el coacutedigo libre de errores con el desarrollo basado en pruebas
en Visual Studio Cree capas arquitecturas de reutilizacioacuten y evitar la superposicioacuten
funcional Aplicar las mejores praacutecticas para el disentildeo de la clase mejor Simplificar y automatizar las tareas repetitivas
Beneficios del curso El conocimiento de la NET y las bibliotecas no es suficiente para desarrollar aplicaciones robustas patrones de disentildeo probado y las mejores praacutecticas extraiacutedas de la sabiduriacutea de los expertos que ayuda en la creacioacuten de aplicaciones sobre una base soacutelida Este curso proporciona los conocimientos necesarios para resolver los problemas del mundo real de desarrollo de software y ofrecer aplicaciones raacutepida y fiable iquestQuieacuten debe asistir arquitectos programadores y cualquier sistema de desarrollo NET experiencia de programacioacuten a nivel de curso 419 programacioacuten de C o Curso 503 Visual Basic de programacioacuten para NET se supone Manos a la formacioacuten Ganas experiencia en la implementacioacuten NET mejores praacutecticas y patrones de disentildeo Ejercicios completado en VB o C incluyen
La conciliacioacuten de diversos problemas de procesamiento con el patroacuten Estrategia
La simplificacioacuten de un sistema complejo con el patroacuten Fachada La explotacioacuten de Microsoft Entity Framework para acceso a datos y
actualizaciones Creacioacuten de un modelo de objetos de dominio de Negocios Construccioacuten de casos de prueba automatizado Estructuracioacuten de un interfaz de usuario comprobable con el patroacuten
Modelo Vista Controlador La captura y reutilizacioacuten de las pruebas dentro de Visual Studio
Contenido del curso 511
Introduccioacuten Codificacioacuten de las mejores praacutecticas Simplificacioacuten de software con patrones de disentildeo
Simplificacioacuten de programacioacuten complejos con probada patrones de disentildeo La aplicacioacuten de interfaces simples a complejos algoritmos
La unificacioacuten de interfaces de subsistemas para facilitar su uso y reutilizacioacuten
Aplicacioacuten del modelo de fachada Variando la funcionalidad mediante la programacioacuten de interfaces
Fechas del curso
Asistir a eventos destacoacute en persona o en liacutenea con LearningTreeAnyWareTM
Feb 8 hasta 11 Reston VA inscribirse
5to al 8vo 04 Toronto inscribirse
19 a 22 ab Boston (Waltham) inscribirse
04 26ta al 29o Nueva York inscribirse
10 al 13 mayo Los Angelesinscribirse
10 al 13 mayo Ottawa inscribirse
17 al 20 mayo Rockville MD inscribirse
Mayo 24-27 Chicago (Schaumburg) inscribirse
31 mayo a 3 junio Reston VA inscribirse
07 al 10 junio Nueva York inscribirse
Para inscripciones AnyWare por favor regiacutestrese al menos 10 diacuteas antes del inicio del curso Maacutes fechas y lugares En las instalaciones y Formacioacuten personalizada Llevar este o cualquier otro aacuterbol curso de aprendizaje a su ubicacioacuten o la han personalizado para su organizacioacuten Matriacutecula
$ 2890 Norma de matriacutecula
Matriacutecula con un Plan de Ahorro
$ 1700 Premium-Pass
1733 doacutelares Pasaporte de formacioacuten
$ 2250 Vale 10-Pack
$ 2573 Gobierno de descuento
$ 2600 Antiguos Alumnos de descuento de Oro
Alumni Gold Discount
Mejorar la adaptabilidad y la flexibilidad de su aplicacioacuten Explotar el patroacuten Estrategia
Ampliacioacuten de la conducta objeto de forma dinaacutemica El aumento de la funcionalidad sin afectar al coacutedigo existente Composicioacuten de objetos con el patroacuten Decorador
El logro de reutilizacioacuten y flexibilidad La eliminacioacuten de la duplicacioacuten de coacutedigo al esbozar las bases de un
algoritmo Empleando el modelo de plantilla Meacutetodo
Interfaz clases incompatibles La transformacioacuten de una interfaz para agregar valor a coacutedigo
existente Aprovechar el modelo del adaptador
La aplicacioacuten de teacutecnicas de desarrollo basado en pruebas Automatizar las pruebas unitarias
Acortar los ciclos de desarrollo de pruebas automatizadas Mejora de la calidad con una cobertura consistente de pruebas La eliminacioacuten de los errores de regresioacuten con las pruebas
reutilizables La integracioacuten de las pruebas y la codificacioacuten
La aplicacioacuten de la prueba praacutectica de programacioacuten de sesiones para conducir el disentildeo del coacutedigo
Generar retroalimentacioacuten inmediata luz verde para el aumento de la calidad del coacutedigo y los cortos ciclos de desarrollo de funciones
Organizar coordinar y ejecutar los casos de prueba con Visual Studio Arquitectura de una aplicacioacuten de capas Disentildeo de la arquitectura de aplicaciones
Capas arquitecturas de reutilizacioacuten durabilidad y capacidad de ampliacioacuten
Acceso a datos de la capa de negocio La disociacioacuten de creacioacuten de objetos con el patroacuten de la faacutebrica Preservar la identidad del objeto con el patroacuten de identidad Mapa
Programacioacuten niveles de la aplicacioacuten Estructuracioacuten de un cliente Web o de aplicaciones ricas con el
patroacuten Observer Organizador rico estado-aplicaciones con el modelo de Estado Reestructuracioacuten de las tablas de la base de datos sin afectar el
coacutedigo de la aplicacioacuten Modelado de un aacuterea de negocio
Libertador ricos Business Object modelos de las estructuras de base de datos utilizando el patroacuten de modelo de dominio
Cartografiacutea ricos Business Objects a las tablas de base de datos con el patroacuten Data Mapper
El colapso de las jerarquiacuteas de objetos de negocio con el patroacuten de herencia Mapper
La explotacioacuten de la programacioacuten declarativa en Microsoft Entity Framework para implementar clases de datos de cartografiacutea
Attend your first course and you will receive a personalized Alumni Gold Discount card entitling you to save as much as $320 on each course you take within the following 12 months
Alumni Gold Discount Attend your first course and you will receive a personalized Alumni Gold Discount card entitling you to save as much as $320 on each course you take within the following 12 months
Federal State and Local Government Federal State and Local Government employees can take advantage of government discount pricing for Learning Tree Courses
Federal State and Local Government Federal State and Local Government employees can take advantage of government discount pricing for Learning Tree Courses
Training Vouchers With Vouchers any members of your team can attend any Learning Tree Course anytime Available in 5- and 10-Course Packs or larger each Voucher is valid for 12 months and is used in lieu of the tuition for any Learning Tree Public Course
Training Vouchers With Vouchers any members of your team can attend any Learning Tree Course anytime Available in 5- and 10-Course Packs or larger each Voucher is valid for 12 months and is
La aplicacioacuten de Buenas Praacutecticas La organizacioacuten y la aplicacioacuten de la loacutegica de negocio
La aplicacioacuten de los patrones de dominio de la loacutegica en el nivel medio
Ampliacioacuten de tipos de entidad con clases parciales La manipulacioacuten de los grupos de entidades con las clases de loacutegica
de negocio Las mejores praacutecticas en el disentildeo de clase
Proteccioacuten contra la rigidez con el Abierto de Principio Cerrado La extraccioacuten de las nuevas clases con el Principio de Responsabilidad
Individual El uso eficaz de la herencia
Automatizar tareas repetitivas Facilitar los datos de coacutedigo de acceso
La reduccioacuten de la base de datos de coacutedigo de acceso mediante la explotacioacuten de la entidad de navegacioacuten Propiedades
La eliminacioacuten de coacutedigo de actualizacioacuten de base de datos con el cambio de entidad de seguimiento Mejorar el coacutedigo de aplicacioacuten
Automatizacioacuten de revisiones de disentildeo con FxCop y Visual Studio Anaacutelisis
La eliminacioacuten de la duplicacioacuten de coacutedigo a traveacutes de la refactorizacioacuten para los patrones de disentildeo
ltltVolver a Visual Studio y NET Listado de cursos Cursos relacionados
Construyendo Aplicaciones Web con ASPNET y Ajax - Curso 506 ASPNET WebForms Integral Introduccioacuten - Curso 512 Construyendo Aplicaciones Web con ASPNET MVC - Curso 977 NET 4 Programacioacuten - Curso 2620 WPF y Silverlight Introduccioacuten - Curso 975 Servicios Web NET Introduccioacuten - Curso 2601 De programacioacuten C extendido Caracteriacutesticas - Curso 973 Programacioacuten de aplicaciones con SharePoint 2010 - NET Curso 2615 Windows Azure - Curso 2602
used in lieu of the tuition for any Learning Tree Public Course
Training Passport As a Training Passport holder one person can take as many as three hands-on courses in 12 months for as little as $1733 per course Only $5200 - save as much as 45
Training Passport As a Training Passport holder one person can take as many as three hands-on courses in 12 months for as little as $1733 per course Only $5200 - save as much as 45
Premium Pass The NEW Premium Pass gives you more time to take more courses while saving more money Take 4 courses within 24 months for as little as $1700 per course mdash at a price of only $6790 you can SAVE as much as 45 per course
Premium Pass The NEW Premium Pass gives you more time to take more courses while saving more money Take 4 courses within 24 months for as little as $1700 per course mdash at a price of only $6790 you can SAVE as much as 45 per course
DimoEnIngles As New EducadoIngles() asignar la clase a la interfaz iMuyEduado = oEnIngles usando la interfaz iMuyEduadodiHola() iMuyEduadodiAdios() ---------------- iMuyEduado = Nothing oEnEspantildeol = Nothing oEnIngles = Nothing End Sub ------------------------------------------- Supongamos que tenemos una clase encargada de interactuar con el usuario en un entorno de liacutenea de comandos saludaacutendolo al iniciar la sesioacuten y despidieacutendose al terminar Podemos independizar nuestra clase del idioma empleado haciendo que tenga una referencia a la interfaz educado Listado 04 - Clase que implementa la interfaz en el constructor ------------------------------------------- ------------------------------------------- Public Class HaceUsoInterfazEducado Dim iMuyEduado As IEducado Public Sub New(ByValUnObjetoIdioma As Object) definicion de la interfaz asignando una clase a la interfaz ctypeespor [Option Strict ON] iMuyEduado = CType(UnObjetoIdioma IEducado) End Sub Public Sub diHola() iMuyEduadodiHola() End Sub Public Sub diAdios() iMuyEduadodiAdios() End Sub End Class ------------------------------------------- En funcioacuten del idioma seleccionado por el usuario esta clase recibiraacute en su constructor una implementacioacuten u otra sin necesidad de modificar la clase que hace uso de los servicios ofrecidos por esta interfaz Es maacutes podemos seguir antildeadiendo soporte de nuevos idiomas creando nuevas implementaciones de la interfaz Listado 05 - Funcioacuten que utiliza la clase anterior [HaceUsoInterfazEducado] ------------------------------------------- Public Sub ProbarInterfazFormaDos() Instanciar una clase en funcioacuten del idioma a utilizar DimoEnEspantildeol As New EducadoEspantildeol() instanciar la clase que usa el interfaz DimoIEducado As New HaceUsoInterfazEducado(oEnEspantildeol) oIEducadodiHola() oIEducadodiAdios()
oIEducado = Nothing oEnEspantildeol = Nothing End Sub ------------------------------------------- Otros lenguajes maacutes antiguos como C++ o Visual Basic carecen de interfaces En su lugar ofrecen otra construccioacuten las clases abstractas tambieacuten presentes en Java y C En C++ una clase es abstracta cuando tiene uno de sus meacutetodos virtual El modificador virtual es similar al modificador abstract de Java y otros lenguajes En C++ definiriacuteamos el contrato de nuestra interfaz con una clase abstracta (que puede ser pura si todos sus meacutetodos son abstractos) y cada una de las implementaciones de la interfaz seriacutean clases que heredariacutean de eacutesta Incluso las uacuteltimas versiones de Visual Basic (5 y 6) antes de su sustitucioacuten por Visual Basic NET permitiacutean la definicioacuten de clases abstractas Para tal fin habiacutea que crear un moacutedulo de clase con el asistente visual del lenguaje y dar el valor PublicNoCreatable a la propiedad Instancing del moacutedulo Esto haciacutea que no se pudiese utilizar ni el operador new ni la funcioacuten CreateObject para obtener instancias de la clase Un moacutedulo podiacutea implementar esta interfaz mediante el uso de la palabra reservada implements
Arriba
El patroacuten Delegacioacuten La delegacioacuten consiste en un medio de extender y reutilizar la funcionalidad de una clase mediante la creacioacuten de otra clase que se la proporcione Todos los lenguajes orientados a objetos proporcionan mecanismos para implementar este patroacuten pues basta con antildeadir una nueva referencia a la clase que consume el servicio
Diagrama de clases UML del patroacuten Delegacioacuten
La importancia del patroacuten Delegacioacuten radica en que nos proporciona un mecanismo para decidir cuaacutendo debemos hacer que una clase herede de otra o cuando antildeadirle una referencia para utilizar sus servicios En nuestro ejemplo de la clase educada parece claro que hay que utilizar delegacioacuten Muchas veces la decisioacuten nos la da el sentido comuacuten (la regla de es un) mientras que otras veces habraacute que hacer un anaacutelisis del nuacutemero de herencias posibles En nuestro ejemplo antildeadiendo una referencia a la interfaz IEducado soacutelo crearemos una clase que consuma sus servicios mientras que si optamos por el mecanismo de la herencia tendriacuteamos que crear dos subclases una de EducadoIngles y otra de EducadoEspantildeol Ademaacutes conforme fuese creciendo el nuacutemero de implementaciones de IEducado habriacutea que ir aumentando el nuacutemero de herencias El listado siguiente se muestra la codificacioacuten en VBNET de este patroacuten Listado 06 - Patroacuten delegacioacuten (extracto del listado 4) ------------------------------------------- PublicClassHaceUsoInterfazEducado DimiMuyEduado As IEducado El coacutedigo completo de la clase esta en el listado 04 EndClass -------------------------------------------
Arriba
Patrones de creacioacuten Singleton
Una vez introducidos dos de los patrones de disentildeo fundamentales Interfaz y Delegacioacuten veremos un patroacuten del tipo creacional muy frecuente en la praacutectica el patroacuten de disentildeo Singleton Este patroacuten se utiliza cuando queremos garantizar que de una determinada clase soacutelo existe una instancia De esta forma todos los objetos que hagan uso de esa clase utilizaraacuten la misma instancia iquestCuaacutendo suele ser necesario aplicar un Singleton Cuando nos encontramos con clases que deben encargarse de gestionar un recurso bien sea externo (las conexiones a una base de datos por ejemplo) bien sea interno (informacioacuten de configuracioacuten global a nivel de sistema informacioacuten uacutenica para el contexto de la aplicacioacuten etc)
Gestor de conexiones con el patroacuten Singleton
iquestCoacutemo se implementa un Singleton En primer lugar se debe impedir que los clientes construyan instancias de la clase que se desea hacer Singleton Para ello lo normal es hacer su constructor privado Ademaacutes se debe hacer que dicha clase contenga una referencia estaacutetica a la uacutenica instancia de esa propia clase que puede existir En el mundo de la orientacioacuten a objetos se denomina estaacuteticas a aquellas propiedades y meacutetodos que son comunes de una clase y por tanto compartidas por todas sus instancias Por uacuteltimo se debe antildeadir al Singleton un meacutetodo puacuteblico y estaacutetico que devuelva la uacutenica referencia existente de esa clase En el listado siguiente vemos coacutemo implementar un Singleton en Visual BasicNET Listado 07 - Patroacuten de creacioacuten Singleton ------------------------------------------- PublicClassSingleton Variable que contiene la referencia a ESTA clase Private Shared m_Instance As Singleton = Nothing constructor privado Private Sub New() o hacer nada End Sub meacutetodo estaacutetico permite obtener la referencia de la clase siempre se devuelve la misma referencia Public Shared ReadOnly Property Instance() As Singleton Get If m_Instance Is Nothing Then m_Instance = New Singleton() End If Return m_Instance End Get End Property
EndClass ------------------------------------------- El patroacuten Singleton Asegura que solo se cree una instancia de la clase y provee un punto global de acceso a esta En el siguiente ejemplo crearemos una clase que inicialice y retorne un objeto conexioacuten si no existe y si ya existen que nos retorne la instancia existente El ejemplo estaacute escrito por Enriquillo Mantildeoacuten y lo encontre el dia 22122004 en la paacutegina siguiente httpwwwmicrosoftcomspanishmsdncomunidadmtjnetvoicesart151asp Listado 08 - Patroacuten de creacioacuten Singleton ------------------------------------------- Implementacioacuten del Patroacuten Singleton PublicClassConexion Objeto que contendraacute la instancia compartida Private Shared m_objConexion As Conexion Privatem_FechaCreacion As String El Mutex es una clase que proporciona NET FrameWork Con ella evitaremos que en un ambiente multithread se cree alguacuten tipo de conflicto Private Shared m_Mutex As New SystemThreadingMutex Private Sub New() m_FechaCreacion = DateTimeNowToString End Sub Este meacutetodo eliminaraacute la instancia ya existente Public Shared Sub KillInstance() m_objConexion = Nothing End Sub Este seraacute el meacutetodo que proporcionara el acceso A la instancia existente si no existe creara unanueva (meacutetodo Singleton) Public Shared Function GetInstance() As Conexion m_MutexWaitOne() If m_objConexion Is Nothing Then m_objConexion = New Conexion End If m_MutexReleaseMutex() Return m_objConexion EndFunction Propiedad que presenta la fecha y hora en que Fue creada la instancia PublicReadOnlyPropertyFechaCreada() As String Get Return m_FechaCreacion End Get End Property End Class ------------------------------------------- La implementacioacuten para probar nuestra clase es bastante sencilla para instanciarla
Listado 09 - Patroacuten de creacioacuten instanciarla ------------------------------------------- Try Dim objConexion As SingletonConexion objConexion = SingletonConexionGetInstance TextBox1Text amp= Instancia Creada el + objConexionFechaCreadaampvbCrLf Catch ex As Exception MessageBoxShow(exMessage) End Try ------------------------------------------- Y para inicializarla Listado 10 - Patroacuten de creacioacuten inicializarla ------------------------------------------- Try SingletonConexionKillInstance() TextBox1Text amp= InstanciaEliminada---- ampvbCrLf Catch ex As Exception MessageBoxShow(exMessage) End Try -------------------------------------------
Arriba
Para Saber Mas [1] A Pattern Language Towns Buildings Construction Christopher Alexander 1977 [2] Using Patterns Languages for Object-Oriented Programs Ward Cunningham Kent Beck 1987 [3] Desing Patterns Elements of Reusable Object Oriented Software Gamma Helm Vlissides y Jonson 1994 [4] Patterns Of Enterprise Application Architecture Martiacuten Fowler [5] Java Blueprints httpjavasuncomblueprintspatternscataloghtm [6] NET Enterprise Patterns httpmsdnmicrosoftcomarchitecturepatterns [7] Patterns in Java A Catalog of Reusable Design Patterns Illustrated with UML Mark Grand [8] Te Server Side En esta web encontraremos una seccion dedicada a patrones de disentildeo wwwtheserversidecom
Arriba
Referencia bibliograacutefica Este documento esta COPIADO en su totalidad de un articulo escrito por Aacutelvaro Zabala Ordoacutentildeez y fue publicado en la revista Soacutelo Programadores num 113 con el tiacutetulo Patrones de Disentildeo Un curso practico [I] El articulo original muestra ejemplos en varios lenguajes En esta COPIA los he sustituido por ejemplos escritos exclusivamente en Visual Basic NET y ademaacutes he modificado la redaccioacuten de los paacuterrafos que haciacutean referencia a los ejemplos en otros lenguajes al objeto de darle una coherencia al texto final
Usted aprenderaacute a Aplicar meacutetodos probados para crear adaptables confiables y
eficientes NET y aplicaciones de cliente inteligente Resolver problemas de programacioacuten complejos con los patrones de
disentildeo estaacutendar de la industria Entregar el coacutedigo libre de errores con el desarrollo basado en pruebas
en Visual Studio Cree capas arquitecturas de reutilizacioacuten y evitar la superposicioacuten
funcional Aplicar las mejores praacutecticas para el disentildeo de la clase mejor Simplificar y automatizar las tareas repetitivas
Beneficios del curso El conocimiento de la NET y las bibliotecas no es suficiente para desarrollar aplicaciones robustas patrones de disentildeo probado y las mejores praacutecticas extraiacutedas de la sabiduriacutea de los expertos que ayuda en la creacioacuten de aplicaciones sobre una base soacutelida Este curso proporciona los conocimientos necesarios para resolver los problemas del mundo real de desarrollo de software y ofrecer aplicaciones raacutepida y fiable iquestQuieacuten debe asistir arquitectos programadores y cualquier sistema de desarrollo NET experiencia de programacioacuten a nivel de curso 419 programacioacuten de C o Curso 503 Visual Basic de programacioacuten para NET se supone Manos a la formacioacuten Ganas experiencia en la implementacioacuten NET mejores praacutecticas y patrones de disentildeo Ejercicios completado en VB o C incluyen
La conciliacioacuten de diversos problemas de procesamiento con el patroacuten Estrategia
La simplificacioacuten de un sistema complejo con el patroacuten Fachada La explotacioacuten de Microsoft Entity Framework para acceso a datos y
actualizaciones Creacioacuten de un modelo de objetos de dominio de Negocios Construccioacuten de casos de prueba automatizado Estructuracioacuten de un interfaz de usuario comprobable con el patroacuten
Modelo Vista Controlador La captura y reutilizacioacuten de las pruebas dentro de Visual Studio
Contenido del curso 511
Introduccioacuten Codificacioacuten de las mejores praacutecticas Simplificacioacuten de software con patrones de disentildeo
Simplificacioacuten de programacioacuten complejos con probada patrones de disentildeo La aplicacioacuten de interfaces simples a complejos algoritmos
La unificacioacuten de interfaces de subsistemas para facilitar su uso y reutilizacioacuten
Aplicacioacuten del modelo de fachada Variando la funcionalidad mediante la programacioacuten de interfaces
Fechas del curso
Asistir a eventos destacoacute en persona o en liacutenea con LearningTreeAnyWareTM
Feb 8 hasta 11 Reston VA inscribirse
5to al 8vo 04 Toronto inscribirse
19 a 22 ab Boston (Waltham) inscribirse
04 26ta al 29o Nueva York inscribirse
10 al 13 mayo Los Angelesinscribirse
10 al 13 mayo Ottawa inscribirse
17 al 20 mayo Rockville MD inscribirse
Mayo 24-27 Chicago (Schaumburg) inscribirse
31 mayo a 3 junio Reston VA inscribirse
07 al 10 junio Nueva York inscribirse
Para inscripciones AnyWare por favor regiacutestrese al menos 10 diacuteas antes del inicio del curso Maacutes fechas y lugares En las instalaciones y Formacioacuten personalizada Llevar este o cualquier otro aacuterbol curso de aprendizaje a su ubicacioacuten o la han personalizado para su organizacioacuten Matriacutecula
$ 2890 Norma de matriacutecula
Matriacutecula con un Plan de Ahorro
$ 1700 Premium-Pass
1733 doacutelares Pasaporte de formacioacuten
$ 2250 Vale 10-Pack
$ 2573 Gobierno de descuento
$ 2600 Antiguos Alumnos de descuento de Oro
Alumni Gold Discount
Mejorar la adaptabilidad y la flexibilidad de su aplicacioacuten Explotar el patroacuten Estrategia
Ampliacioacuten de la conducta objeto de forma dinaacutemica El aumento de la funcionalidad sin afectar al coacutedigo existente Composicioacuten de objetos con el patroacuten Decorador
El logro de reutilizacioacuten y flexibilidad La eliminacioacuten de la duplicacioacuten de coacutedigo al esbozar las bases de un
algoritmo Empleando el modelo de plantilla Meacutetodo
Interfaz clases incompatibles La transformacioacuten de una interfaz para agregar valor a coacutedigo
existente Aprovechar el modelo del adaptador
La aplicacioacuten de teacutecnicas de desarrollo basado en pruebas Automatizar las pruebas unitarias
Acortar los ciclos de desarrollo de pruebas automatizadas Mejora de la calidad con una cobertura consistente de pruebas La eliminacioacuten de los errores de regresioacuten con las pruebas
reutilizables La integracioacuten de las pruebas y la codificacioacuten
La aplicacioacuten de la prueba praacutectica de programacioacuten de sesiones para conducir el disentildeo del coacutedigo
Generar retroalimentacioacuten inmediata luz verde para el aumento de la calidad del coacutedigo y los cortos ciclos de desarrollo de funciones
Organizar coordinar y ejecutar los casos de prueba con Visual Studio Arquitectura de una aplicacioacuten de capas Disentildeo de la arquitectura de aplicaciones
Capas arquitecturas de reutilizacioacuten durabilidad y capacidad de ampliacioacuten
Acceso a datos de la capa de negocio La disociacioacuten de creacioacuten de objetos con el patroacuten de la faacutebrica Preservar la identidad del objeto con el patroacuten de identidad Mapa
Programacioacuten niveles de la aplicacioacuten Estructuracioacuten de un cliente Web o de aplicaciones ricas con el
patroacuten Observer Organizador rico estado-aplicaciones con el modelo de Estado Reestructuracioacuten de las tablas de la base de datos sin afectar el
coacutedigo de la aplicacioacuten Modelado de un aacuterea de negocio
Libertador ricos Business Object modelos de las estructuras de base de datos utilizando el patroacuten de modelo de dominio
Cartografiacutea ricos Business Objects a las tablas de base de datos con el patroacuten Data Mapper
El colapso de las jerarquiacuteas de objetos de negocio con el patroacuten de herencia Mapper
La explotacioacuten de la programacioacuten declarativa en Microsoft Entity Framework para implementar clases de datos de cartografiacutea
Attend your first course and you will receive a personalized Alumni Gold Discount card entitling you to save as much as $320 on each course you take within the following 12 months
Alumni Gold Discount Attend your first course and you will receive a personalized Alumni Gold Discount card entitling you to save as much as $320 on each course you take within the following 12 months
Federal State and Local Government Federal State and Local Government employees can take advantage of government discount pricing for Learning Tree Courses
Federal State and Local Government Federal State and Local Government employees can take advantage of government discount pricing for Learning Tree Courses
Training Vouchers With Vouchers any members of your team can attend any Learning Tree Course anytime Available in 5- and 10-Course Packs or larger each Voucher is valid for 12 months and is used in lieu of the tuition for any Learning Tree Public Course
Training Vouchers With Vouchers any members of your team can attend any Learning Tree Course anytime Available in 5- and 10-Course Packs or larger each Voucher is valid for 12 months and is
La aplicacioacuten de Buenas Praacutecticas La organizacioacuten y la aplicacioacuten de la loacutegica de negocio
La aplicacioacuten de los patrones de dominio de la loacutegica en el nivel medio
Ampliacioacuten de tipos de entidad con clases parciales La manipulacioacuten de los grupos de entidades con las clases de loacutegica
de negocio Las mejores praacutecticas en el disentildeo de clase
Proteccioacuten contra la rigidez con el Abierto de Principio Cerrado La extraccioacuten de las nuevas clases con el Principio de Responsabilidad
Individual El uso eficaz de la herencia
Automatizar tareas repetitivas Facilitar los datos de coacutedigo de acceso
La reduccioacuten de la base de datos de coacutedigo de acceso mediante la explotacioacuten de la entidad de navegacioacuten Propiedades
La eliminacioacuten de coacutedigo de actualizacioacuten de base de datos con el cambio de entidad de seguimiento Mejorar el coacutedigo de aplicacioacuten
Automatizacioacuten de revisiones de disentildeo con FxCop y Visual Studio Anaacutelisis
La eliminacioacuten de la duplicacioacuten de coacutedigo a traveacutes de la refactorizacioacuten para los patrones de disentildeo
ltltVolver a Visual Studio y NET Listado de cursos Cursos relacionados
Construyendo Aplicaciones Web con ASPNET y Ajax - Curso 506 ASPNET WebForms Integral Introduccioacuten - Curso 512 Construyendo Aplicaciones Web con ASPNET MVC - Curso 977 NET 4 Programacioacuten - Curso 2620 WPF y Silverlight Introduccioacuten - Curso 975 Servicios Web NET Introduccioacuten - Curso 2601 De programacioacuten C extendido Caracteriacutesticas - Curso 973 Programacioacuten de aplicaciones con SharePoint 2010 - NET Curso 2615 Windows Azure - Curso 2602
used in lieu of the tuition for any Learning Tree Public Course
Training Passport As a Training Passport holder one person can take as many as three hands-on courses in 12 months for as little as $1733 per course Only $5200 - save as much as 45
Training Passport As a Training Passport holder one person can take as many as three hands-on courses in 12 months for as little as $1733 per course Only $5200 - save as much as 45
Premium Pass The NEW Premium Pass gives you more time to take more courses while saving more money Take 4 courses within 24 months for as little as $1700 per course mdash at a price of only $6790 you can SAVE as much as 45 per course
Premium Pass The NEW Premium Pass gives you more time to take more courses while saving more money Take 4 courses within 24 months for as little as $1700 per course mdash at a price of only $6790 you can SAVE as much as 45 per course
oIEducado = Nothing oEnEspantildeol = Nothing End Sub ------------------------------------------- Otros lenguajes maacutes antiguos como C++ o Visual Basic carecen de interfaces En su lugar ofrecen otra construccioacuten las clases abstractas tambieacuten presentes en Java y C En C++ una clase es abstracta cuando tiene uno de sus meacutetodos virtual El modificador virtual es similar al modificador abstract de Java y otros lenguajes En C++ definiriacuteamos el contrato de nuestra interfaz con una clase abstracta (que puede ser pura si todos sus meacutetodos son abstractos) y cada una de las implementaciones de la interfaz seriacutean clases que heredariacutean de eacutesta Incluso las uacuteltimas versiones de Visual Basic (5 y 6) antes de su sustitucioacuten por Visual Basic NET permitiacutean la definicioacuten de clases abstractas Para tal fin habiacutea que crear un moacutedulo de clase con el asistente visual del lenguaje y dar el valor PublicNoCreatable a la propiedad Instancing del moacutedulo Esto haciacutea que no se pudiese utilizar ni el operador new ni la funcioacuten CreateObject para obtener instancias de la clase Un moacutedulo podiacutea implementar esta interfaz mediante el uso de la palabra reservada implements
Arriba
El patroacuten Delegacioacuten La delegacioacuten consiste en un medio de extender y reutilizar la funcionalidad de una clase mediante la creacioacuten de otra clase que se la proporcione Todos los lenguajes orientados a objetos proporcionan mecanismos para implementar este patroacuten pues basta con antildeadir una nueva referencia a la clase que consume el servicio
Diagrama de clases UML del patroacuten Delegacioacuten
La importancia del patroacuten Delegacioacuten radica en que nos proporciona un mecanismo para decidir cuaacutendo debemos hacer que una clase herede de otra o cuando antildeadirle una referencia para utilizar sus servicios En nuestro ejemplo de la clase educada parece claro que hay que utilizar delegacioacuten Muchas veces la decisioacuten nos la da el sentido comuacuten (la regla de es un) mientras que otras veces habraacute que hacer un anaacutelisis del nuacutemero de herencias posibles En nuestro ejemplo antildeadiendo una referencia a la interfaz IEducado soacutelo crearemos una clase que consuma sus servicios mientras que si optamos por el mecanismo de la herencia tendriacuteamos que crear dos subclases una de EducadoIngles y otra de EducadoEspantildeol Ademaacutes conforme fuese creciendo el nuacutemero de implementaciones de IEducado habriacutea que ir aumentando el nuacutemero de herencias El listado siguiente se muestra la codificacioacuten en VBNET de este patroacuten Listado 06 - Patroacuten delegacioacuten (extracto del listado 4) ------------------------------------------- PublicClassHaceUsoInterfazEducado DimiMuyEduado As IEducado El coacutedigo completo de la clase esta en el listado 04 EndClass -------------------------------------------
Arriba
Patrones de creacioacuten Singleton
Una vez introducidos dos de los patrones de disentildeo fundamentales Interfaz y Delegacioacuten veremos un patroacuten del tipo creacional muy frecuente en la praacutectica el patroacuten de disentildeo Singleton Este patroacuten se utiliza cuando queremos garantizar que de una determinada clase soacutelo existe una instancia De esta forma todos los objetos que hagan uso de esa clase utilizaraacuten la misma instancia iquestCuaacutendo suele ser necesario aplicar un Singleton Cuando nos encontramos con clases que deben encargarse de gestionar un recurso bien sea externo (las conexiones a una base de datos por ejemplo) bien sea interno (informacioacuten de configuracioacuten global a nivel de sistema informacioacuten uacutenica para el contexto de la aplicacioacuten etc)
Gestor de conexiones con el patroacuten Singleton
iquestCoacutemo se implementa un Singleton En primer lugar se debe impedir que los clientes construyan instancias de la clase que se desea hacer Singleton Para ello lo normal es hacer su constructor privado Ademaacutes se debe hacer que dicha clase contenga una referencia estaacutetica a la uacutenica instancia de esa propia clase que puede existir En el mundo de la orientacioacuten a objetos se denomina estaacuteticas a aquellas propiedades y meacutetodos que son comunes de una clase y por tanto compartidas por todas sus instancias Por uacuteltimo se debe antildeadir al Singleton un meacutetodo puacuteblico y estaacutetico que devuelva la uacutenica referencia existente de esa clase En el listado siguiente vemos coacutemo implementar un Singleton en Visual BasicNET Listado 07 - Patroacuten de creacioacuten Singleton ------------------------------------------- PublicClassSingleton Variable que contiene la referencia a ESTA clase Private Shared m_Instance As Singleton = Nothing constructor privado Private Sub New() o hacer nada End Sub meacutetodo estaacutetico permite obtener la referencia de la clase siempre se devuelve la misma referencia Public Shared ReadOnly Property Instance() As Singleton Get If m_Instance Is Nothing Then m_Instance = New Singleton() End If Return m_Instance End Get End Property
EndClass ------------------------------------------- El patroacuten Singleton Asegura que solo se cree una instancia de la clase y provee un punto global de acceso a esta En el siguiente ejemplo crearemos una clase que inicialice y retorne un objeto conexioacuten si no existe y si ya existen que nos retorne la instancia existente El ejemplo estaacute escrito por Enriquillo Mantildeoacuten y lo encontre el dia 22122004 en la paacutegina siguiente httpwwwmicrosoftcomspanishmsdncomunidadmtjnetvoicesart151asp Listado 08 - Patroacuten de creacioacuten Singleton ------------------------------------------- Implementacioacuten del Patroacuten Singleton PublicClassConexion Objeto que contendraacute la instancia compartida Private Shared m_objConexion As Conexion Privatem_FechaCreacion As String El Mutex es una clase que proporciona NET FrameWork Con ella evitaremos que en un ambiente multithread se cree alguacuten tipo de conflicto Private Shared m_Mutex As New SystemThreadingMutex Private Sub New() m_FechaCreacion = DateTimeNowToString End Sub Este meacutetodo eliminaraacute la instancia ya existente Public Shared Sub KillInstance() m_objConexion = Nothing End Sub Este seraacute el meacutetodo que proporcionara el acceso A la instancia existente si no existe creara unanueva (meacutetodo Singleton) Public Shared Function GetInstance() As Conexion m_MutexWaitOne() If m_objConexion Is Nothing Then m_objConexion = New Conexion End If m_MutexReleaseMutex() Return m_objConexion EndFunction Propiedad que presenta la fecha y hora en que Fue creada la instancia PublicReadOnlyPropertyFechaCreada() As String Get Return m_FechaCreacion End Get End Property End Class ------------------------------------------- La implementacioacuten para probar nuestra clase es bastante sencilla para instanciarla
Listado 09 - Patroacuten de creacioacuten instanciarla ------------------------------------------- Try Dim objConexion As SingletonConexion objConexion = SingletonConexionGetInstance TextBox1Text amp= Instancia Creada el + objConexionFechaCreadaampvbCrLf Catch ex As Exception MessageBoxShow(exMessage) End Try ------------------------------------------- Y para inicializarla Listado 10 - Patroacuten de creacioacuten inicializarla ------------------------------------------- Try SingletonConexionKillInstance() TextBox1Text amp= InstanciaEliminada---- ampvbCrLf Catch ex As Exception MessageBoxShow(exMessage) End Try -------------------------------------------
Arriba
Para Saber Mas [1] A Pattern Language Towns Buildings Construction Christopher Alexander 1977 [2] Using Patterns Languages for Object-Oriented Programs Ward Cunningham Kent Beck 1987 [3] Desing Patterns Elements of Reusable Object Oriented Software Gamma Helm Vlissides y Jonson 1994 [4] Patterns Of Enterprise Application Architecture Martiacuten Fowler [5] Java Blueprints httpjavasuncomblueprintspatternscataloghtm [6] NET Enterprise Patterns httpmsdnmicrosoftcomarchitecturepatterns [7] Patterns in Java A Catalog of Reusable Design Patterns Illustrated with UML Mark Grand [8] Te Server Side En esta web encontraremos una seccion dedicada a patrones de disentildeo wwwtheserversidecom
Arriba
Referencia bibliograacutefica Este documento esta COPIADO en su totalidad de un articulo escrito por Aacutelvaro Zabala Ordoacutentildeez y fue publicado en la revista Soacutelo Programadores num 113 con el tiacutetulo Patrones de Disentildeo Un curso practico [I] El articulo original muestra ejemplos en varios lenguajes En esta COPIA los he sustituido por ejemplos escritos exclusivamente en Visual Basic NET y ademaacutes he modificado la redaccioacuten de los paacuterrafos que haciacutean referencia a los ejemplos en otros lenguajes al objeto de darle una coherencia al texto final
Usted aprenderaacute a Aplicar meacutetodos probados para crear adaptables confiables y
eficientes NET y aplicaciones de cliente inteligente Resolver problemas de programacioacuten complejos con los patrones de
disentildeo estaacutendar de la industria Entregar el coacutedigo libre de errores con el desarrollo basado en pruebas
en Visual Studio Cree capas arquitecturas de reutilizacioacuten y evitar la superposicioacuten
funcional Aplicar las mejores praacutecticas para el disentildeo de la clase mejor Simplificar y automatizar las tareas repetitivas
Beneficios del curso El conocimiento de la NET y las bibliotecas no es suficiente para desarrollar aplicaciones robustas patrones de disentildeo probado y las mejores praacutecticas extraiacutedas de la sabiduriacutea de los expertos que ayuda en la creacioacuten de aplicaciones sobre una base soacutelida Este curso proporciona los conocimientos necesarios para resolver los problemas del mundo real de desarrollo de software y ofrecer aplicaciones raacutepida y fiable iquestQuieacuten debe asistir arquitectos programadores y cualquier sistema de desarrollo NET experiencia de programacioacuten a nivel de curso 419 programacioacuten de C o Curso 503 Visual Basic de programacioacuten para NET se supone Manos a la formacioacuten Ganas experiencia en la implementacioacuten NET mejores praacutecticas y patrones de disentildeo Ejercicios completado en VB o C incluyen
La conciliacioacuten de diversos problemas de procesamiento con el patroacuten Estrategia
La simplificacioacuten de un sistema complejo con el patroacuten Fachada La explotacioacuten de Microsoft Entity Framework para acceso a datos y
actualizaciones Creacioacuten de un modelo de objetos de dominio de Negocios Construccioacuten de casos de prueba automatizado Estructuracioacuten de un interfaz de usuario comprobable con el patroacuten
Modelo Vista Controlador La captura y reutilizacioacuten de las pruebas dentro de Visual Studio
Contenido del curso 511
Introduccioacuten Codificacioacuten de las mejores praacutecticas Simplificacioacuten de software con patrones de disentildeo
Simplificacioacuten de programacioacuten complejos con probada patrones de disentildeo La aplicacioacuten de interfaces simples a complejos algoritmos
La unificacioacuten de interfaces de subsistemas para facilitar su uso y reutilizacioacuten
Aplicacioacuten del modelo de fachada Variando la funcionalidad mediante la programacioacuten de interfaces
Fechas del curso
Asistir a eventos destacoacute en persona o en liacutenea con LearningTreeAnyWareTM
Feb 8 hasta 11 Reston VA inscribirse
5to al 8vo 04 Toronto inscribirse
19 a 22 ab Boston (Waltham) inscribirse
04 26ta al 29o Nueva York inscribirse
10 al 13 mayo Los Angelesinscribirse
10 al 13 mayo Ottawa inscribirse
17 al 20 mayo Rockville MD inscribirse
Mayo 24-27 Chicago (Schaumburg) inscribirse
31 mayo a 3 junio Reston VA inscribirse
07 al 10 junio Nueva York inscribirse
Para inscripciones AnyWare por favor regiacutestrese al menos 10 diacuteas antes del inicio del curso Maacutes fechas y lugares En las instalaciones y Formacioacuten personalizada Llevar este o cualquier otro aacuterbol curso de aprendizaje a su ubicacioacuten o la han personalizado para su organizacioacuten Matriacutecula
$ 2890 Norma de matriacutecula
Matriacutecula con un Plan de Ahorro
$ 1700 Premium-Pass
1733 doacutelares Pasaporte de formacioacuten
$ 2250 Vale 10-Pack
$ 2573 Gobierno de descuento
$ 2600 Antiguos Alumnos de descuento de Oro
Alumni Gold Discount
Mejorar la adaptabilidad y la flexibilidad de su aplicacioacuten Explotar el patroacuten Estrategia
Ampliacioacuten de la conducta objeto de forma dinaacutemica El aumento de la funcionalidad sin afectar al coacutedigo existente Composicioacuten de objetos con el patroacuten Decorador
El logro de reutilizacioacuten y flexibilidad La eliminacioacuten de la duplicacioacuten de coacutedigo al esbozar las bases de un
algoritmo Empleando el modelo de plantilla Meacutetodo
Interfaz clases incompatibles La transformacioacuten de una interfaz para agregar valor a coacutedigo
existente Aprovechar el modelo del adaptador
La aplicacioacuten de teacutecnicas de desarrollo basado en pruebas Automatizar las pruebas unitarias
Acortar los ciclos de desarrollo de pruebas automatizadas Mejora de la calidad con una cobertura consistente de pruebas La eliminacioacuten de los errores de regresioacuten con las pruebas
reutilizables La integracioacuten de las pruebas y la codificacioacuten
La aplicacioacuten de la prueba praacutectica de programacioacuten de sesiones para conducir el disentildeo del coacutedigo
Generar retroalimentacioacuten inmediata luz verde para el aumento de la calidad del coacutedigo y los cortos ciclos de desarrollo de funciones
Organizar coordinar y ejecutar los casos de prueba con Visual Studio Arquitectura de una aplicacioacuten de capas Disentildeo de la arquitectura de aplicaciones
Capas arquitecturas de reutilizacioacuten durabilidad y capacidad de ampliacioacuten
Acceso a datos de la capa de negocio La disociacioacuten de creacioacuten de objetos con el patroacuten de la faacutebrica Preservar la identidad del objeto con el patroacuten de identidad Mapa
Programacioacuten niveles de la aplicacioacuten Estructuracioacuten de un cliente Web o de aplicaciones ricas con el
patroacuten Observer Organizador rico estado-aplicaciones con el modelo de Estado Reestructuracioacuten de las tablas de la base de datos sin afectar el
coacutedigo de la aplicacioacuten Modelado de un aacuterea de negocio
Libertador ricos Business Object modelos de las estructuras de base de datos utilizando el patroacuten de modelo de dominio
Cartografiacutea ricos Business Objects a las tablas de base de datos con el patroacuten Data Mapper
El colapso de las jerarquiacuteas de objetos de negocio con el patroacuten de herencia Mapper
La explotacioacuten de la programacioacuten declarativa en Microsoft Entity Framework para implementar clases de datos de cartografiacutea
Attend your first course and you will receive a personalized Alumni Gold Discount card entitling you to save as much as $320 on each course you take within the following 12 months
Alumni Gold Discount Attend your first course and you will receive a personalized Alumni Gold Discount card entitling you to save as much as $320 on each course you take within the following 12 months
Federal State and Local Government Federal State and Local Government employees can take advantage of government discount pricing for Learning Tree Courses
Federal State and Local Government Federal State and Local Government employees can take advantage of government discount pricing for Learning Tree Courses
Training Vouchers With Vouchers any members of your team can attend any Learning Tree Course anytime Available in 5- and 10-Course Packs or larger each Voucher is valid for 12 months and is used in lieu of the tuition for any Learning Tree Public Course
Training Vouchers With Vouchers any members of your team can attend any Learning Tree Course anytime Available in 5- and 10-Course Packs or larger each Voucher is valid for 12 months and is
La aplicacioacuten de Buenas Praacutecticas La organizacioacuten y la aplicacioacuten de la loacutegica de negocio
La aplicacioacuten de los patrones de dominio de la loacutegica en el nivel medio
Ampliacioacuten de tipos de entidad con clases parciales La manipulacioacuten de los grupos de entidades con las clases de loacutegica
de negocio Las mejores praacutecticas en el disentildeo de clase
Proteccioacuten contra la rigidez con el Abierto de Principio Cerrado La extraccioacuten de las nuevas clases con el Principio de Responsabilidad
Individual El uso eficaz de la herencia
Automatizar tareas repetitivas Facilitar los datos de coacutedigo de acceso
La reduccioacuten de la base de datos de coacutedigo de acceso mediante la explotacioacuten de la entidad de navegacioacuten Propiedades
La eliminacioacuten de coacutedigo de actualizacioacuten de base de datos con el cambio de entidad de seguimiento Mejorar el coacutedigo de aplicacioacuten
Automatizacioacuten de revisiones de disentildeo con FxCop y Visual Studio Anaacutelisis
La eliminacioacuten de la duplicacioacuten de coacutedigo a traveacutes de la refactorizacioacuten para los patrones de disentildeo
ltltVolver a Visual Studio y NET Listado de cursos Cursos relacionados
Construyendo Aplicaciones Web con ASPNET y Ajax - Curso 506 ASPNET WebForms Integral Introduccioacuten - Curso 512 Construyendo Aplicaciones Web con ASPNET MVC - Curso 977 NET 4 Programacioacuten - Curso 2620 WPF y Silverlight Introduccioacuten - Curso 975 Servicios Web NET Introduccioacuten - Curso 2601 De programacioacuten C extendido Caracteriacutesticas - Curso 973 Programacioacuten de aplicaciones con SharePoint 2010 - NET Curso 2615 Windows Azure - Curso 2602
used in lieu of the tuition for any Learning Tree Public Course
Training Passport As a Training Passport holder one person can take as many as three hands-on courses in 12 months for as little as $1733 per course Only $5200 - save as much as 45
Training Passport As a Training Passport holder one person can take as many as three hands-on courses in 12 months for as little as $1733 per course Only $5200 - save as much as 45
Premium Pass The NEW Premium Pass gives you more time to take more courses while saving more money Take 4 courses within 24 months for as little as $1700 per course mdash at a price of only $6790 you can SAVE as much as 45 per course
Premium Pass The NEW Premium Pass gives you more time to take more courses while saving more money Take 4 courses within 24 months for as little as $1700 per course mdash at a price of only $6790 you can SAVE as much as 45 per course
Una vez introducidos dos de los patrones de disentildeo fundamentales Interfaz y Delegacioacuten veremos un patroacuten del tipo creacional muy frecuente en la praacutectica el patroacuten de disentildeo Singleton Este patroacuten se utiliza cuando queremos garantizar que de una determinada clase soacutelo existe una instancia De esta forma todos los objetos que hagan uso de esa clase utilizaraacuten la misma instancia iquestCuaacutendo suele ser necesario aplicar un Singleton Cuando nos encontramos con clases que deben encargarse de gestionar un recurso bien sea externo (las conexiones a una base de datos por ejemplo) bien sea interno (informacioacuten de configuracioacuten global a nivel de sistema informacioacuten uacutenica para el contexto de la aplicacioacuten etc)
Gestor de conexiones con el patroacuten Singleton
iquestCoacutemo se implementa un Singleton En primer lugar se debe impedir que los clientes construyan instancias de la clase que se desea hacer Singleton Para ello lo normal es hacer su constructor privado Ademaacutes se debe hacer que dicha clase contenga una referencia estaacutetica a la uacutenica instancia de esa propia clase que puede existir En el mundo de la orientacioacuten a objetos se denomina estaacuteticas a aquellas propiedades y meacutetodos que son comunes de una clase y por tanto compartidas por todas sus instancias Por uacuteltimo se debe antildeadir al Singleton un meacutetodo puacuteblico y estaacutetico que devuelva la uacutenica referencia existente de esa clase En el listado siguiente vemos coacutemo implementar un Singleton en Visual BasicNET Listado 07 - Patroacuten de creacioacuten Singleton ------------------------------------------- PublicClassSingleton Variable que contiene la referencia a ESTA clase Private Shared m_Instance As Singleton = Nothing constructor privado Private Sub New() o hacer nada End Sub meacutetodo estaacutetico permite obtener la referencia de la clase siempre se devuelve la misma referencia Public Shared ReadOnly Property Instance() As Singleton Get If m_Instance Is Nothing Then m_Instance = New Singleton() End If Return m_Instance End Get End Property
EndClass ------------------------------------------- El patroacuten Singleton Asegura que solo se cree una instancia de la clase y provee un punto global de acceso a esta En el siguiente ejemplo crearemos una clase que inicialice y retorne un objeto conexioacuten si no existe y si ya existen que nos retorne la instancia existente El ejemplo estaacute escrito por Enriquillo Mantildeoacuten y lo encontre el dia 22122004 en la paacutegina siguiente httpwwwmicrosoftcomspanishmsdncomunidadmtjnetvoicesart151asp Listado 08 - Patroacuten de creacioacuten Singleton ------------------------------------------- Implementacioacuten del Patroacuten Singleton PublicClassConexion Objeto que contendraacute la instancia compartida Private Shared m_objConexion As Conexion Privatem_FechaCreacion As String El Mutex es una clase que proporciona NET FrameWork Con ella evitaremos que en un ambiente multithread se cree alguacuten tipo de conflicto Private Shared m_Mutex As New SystemThreadingMutex Private Sub New() m_FechaCreacion = DateTimeNowToString End Sub Este meacutetodo eliminaraacute la instancia ya existente Public Shared Sub KillInstance() m_objConexion = Nothing End Sub Este seraacute el meacutetodo que proporcionara el acceso A la instancia existente si no existe creara unanueva (meacutetodo Singleton) Public Shared Function GetInstance() As Conexion m_MutexWaitOne() If m_objConexion Is Nothing Then m_objConexion = New Conexion End If m_MutexReleaseMutex() Return m_objConexion EndFunction Propiedad que presenta la fecha y hora en que Fue creada la instancia PublicReadOnlyPropertyFechaCreada() As String Get Return m_FechaCreacion End Get End Property End Class ------------------------------------------- La implementacioacuten para probar nuestra clase es bastante sencilla para instanciarla
Listado 09 - Patroacuten de creacioacuten instanciarla ------------------------------------------- Try Dim objConexion As SingletonConexion objConexion = SingletonConexionGetInstance TextBox1Text amp= Instancia Creada el + objConexionFechaCreadaampvbCrLf Catch ex As Exception MessageBoxShow(exMessage) End Try ------------------------------------------- Y para inicializarla Listado 10 - Patroacuten de creacioacuten inicializarla ------------------------------------------- Try SingletonConexionKillInstance() TextBox1Text amp= InstanciaEliminada---- ampvbCrLf Catch ex As Exception MessageBoxShow(exMessage) End Try -------------------------------------------
Arriba
Para Saber Mas [1] A Pattern Language Towns Buildings Construction Christopher Alexander 1977 [2] Using Patterns Languages for Object-Oriented Programs Ward Cunningham Kent Beck 1987 [3] Desing Patterns Elements of Reusable Object Oriented Software Gamma Helm Vlissides y Jonson 1994 [4] Patterns Of Enterprise Application Architecture Martiacuten Fowler [5] Java Blueprints httpjavasuncomblueprintspatternscataloghtm [6] NET Enterprise Patterns httpmsdnmicrosoftcomarchitecturepatterns [7] Patterns in Java A Catalog of Reusable Design Patterns Illustrated with UML Mark Grand [8] Te Server Side En esta web encontraremos una seccion dedicada a patrones de disentildeo wwwtheserversidecom
Arriba
Referencia bibliograacutefica Este documento esta COPIADO en su totalidad de un articulo escrito por Aacutelvaro Zabala Ordoacutentildeez y fue publicado en la revista Soacutelo Programadores num 113 con el tiacutetulo Patrones de Disentildeo Un curso practico [I] El articulo original muestra ejemplos en varios lenguajes En esta COPIA los he sustituido por ejemplos escritos exclusivamente en Visual Basic NET y ademaacutes he modificado la redaccioacuten de los paacuterrafos que haciacutean referencia a los ejemplos en otros lenguajes al objeto de darle una coherencia al texto final
Usted aprenderaacute a Aplicar meacutetodos probados para crear adaptables confiables y
eficientes NET y aplicaciones de cliente inteligente Resolver problemas de programacioacuten complejos con los patrones de
disentildeo estaacutendar de la industria Entregar el coacutedigo libre de errores con el desarrollo basado en pruebas
en Visual Studio Cree capas arquitecturas de reutilizacioacuten y evitar la superposicioacuten
funcional Aplicar las mejores praacutecticas para el disentildeo de la clase mejor Simplificar y automatizar las tareas repetitivas
Beneficios del curso El conocimiento de la NET y las bibliotecas no es suficiente para desarrollar aplicaciones robustas patrones de disentildeo probado y las mejores praacutecticas extraiacutedas de la sabiduriacutea de los expertos que ayuda en la creacioacuten de aplicaciones sobre una base soacutelida Este curso proporciona los conocimientos necesarios para resolver los problemas del mundo real de desarrollo de software y ofrecer aplicaciones raacutepida y fiable iquestQuieacuten debe asistir arquitectos programadores y cualquier sistema de desarrollo NET experiencia de programacioacuten a nivel de curso 419 programacioacuten de C o Curso 503 Visual Basic de programacioacuten para NET se supone Manos a la formacioacuten Ganas experiencia en la implementacioacuten NET mejores praacutecticas y patrones de disentildeo Ejercicios completado en VB o C incluyen
La conciliacioacuten de diversos problemas de procesamiento con el patroacuten Estrategia
La simplificacioacuten de un sistema complejo con el patroacuten Fachada La explotacioacuten de Microsoft Entity Framework para acceso a datos y
actualizaciones Creacioacuten de un modelo de objetos de dominio de Negocios Construccioacuten de casos de prueba automatizado Estructuracioacuten de un interfaz de usuario comprobable con el patroacuten
Modelo Vista Controlador La captura y reutilizacioacuten de las pruebas dentro de Visual Studio
Contenido del curso 511
Introduccioacuten Codificacioacuten de las mejores praacutecticas Simplificacioacuten de software con patrones de disentildeo
Simplificacioacuten de programacioacuten complejos con probada patrones de disentildeo La aplicacioacuten de interfaces simples a complejos algoritmos
La unificacioacuten de interfaces de subsistemas para facilitar su uso y reutilizacioacuten
Aplicacioacuten del modelo de fachada Variando la funcionalidad mediante la programacioacuten de interfaces
Fechas del curso
Asistir a eventos destacoacute en persona o en liacutenea con LearningTreeAnyWareTM
Feb 8 hasta 11 Reston VA inscribirse
5to al 8vo 04 Toronto inscribirse
19 a 22 ab Boston (Waltham) inscribirse
04 26ta al 29o Nueva York inscribirse
10 al 13 mayo Los Angelesinscribirse
10 al 13 mayo Ottawa inscribirse
17 al 20 mayo Rockville MD inscribirse
Mayo 24-27 Chicago (Schaumburg) inscribirse
31 mayo a 3 junio Reston VA inscribirse
07 al 10 junio Nueva York inscribirse
Para inscripciones AnyWare por favor regiacutestrese al menos 10 diacuteas antes del inicio del curso Maacutes fechas y lugares En las instalaciones y Formacioacuten personalizada Llevar este o cualquier otro aacuterbol curso de aprendizaje a su ubicacioacuten o la han personalizado para su organizacioacuten Matriacutecula
$ 2890 Norma de matriacutecula
Matriacutecula con un Plan de Ahorro
$ 1700 Premium-Pass
1733 doacutelares Pasaporte de formacioacuten
$ 2250 Vale 10-Pack
$ 2573 Gobierno de descuento
$ 2600 Antiguos Alumnos de descuento de Oro
Alumni Gold Discount
Mejorar la adaptabilidad y la flexibilidad de su aplicacioacuten Explotar el patroacuten Estrategia
Ampliacioacuten de la conducta objeto de forma dinaacutemica El aumento de la funcionalidad sin afectar al coacutedigo existente Composicioacuten de objetos con el patroacuten Decorador
El logro de reutilizacioacuten y flexibilidad La eliminacioacuten de la duplicacioacuten de coacutedigo al esbozar las bases de un
algoritmo Empleando el modelo de plantilla Meacutetodo
Interfaz clases incompatibles La transformacioacuten de una interfaz para agregar valor a coacutedigo
existente Aprovechar el modelo del adaptador
La aplicacioacuten de teacutecnicas de desarrollo basado en pruebas Automatizar las pruebas unitarias
Acortar los ciclos de desarrollo de pruebas automatizadas Mejora de la calidad con una cobertura consistente de pruebas La eliminacioacuten de los errores de regresioacuten con las pruebas
reutilizables La integracioacuten de las pruebas y la codificacioacuten
La aplicacioacuten de la prueba praacutectica de programacioacuten de sesiones para conducir el disentildeo del coacutedigo
Generar retroalimentacioacuten inmediata luz verde para el aumento de la calidad del coacutedigo y los cortos ciclos de desarrollo de funciones
Organizar coordinar y ejecutar los casos de prueba con Visual Studio Arquitectura de una aplicacioacuten de capas Disentildeo de la arquitectura de aplicaciones
Capas arquitecturas de reutilizacioacuten durabilidad y capacidad de ampliacioacuten
Acceso a datos de la capa de negocio La disociacioacuten de creacioacuten de objetos con el patroacuten de la faacutebrica Preservar la identidad del objeto con el patroacuten de identidad Mapa
Programacioacuten niveles de la aplicacioacuten Estructuracioacuten de un cliente Web o de aplicaciones ricas con el
patroacuten Observer Organizador rico estado-aplicaciones con el modelo de Estado Reestructuracioacuten de las tablas de la base de datos sin afectar el
coacutedigo de la aplicacioacuten Modelado de un aacuterea de negocio
Libertador ricos Business Object modelos de las estructuras de base de datos utilizando el patroacuten de modelo de dominio
Cartografiacutea ricos Business Objects a las tablas de base de datos con el patroacuten Data Mapper
El colapso de las jerarquiacuteas de objetos de negocio con el patroacuten de herencia Mapper
La explotacioacuten de la programacioacuten declarativa en Microsoft Entity Framework para implementar clases de datos de cartografiacutea
Attend your first course and you will receive a personalized Alumni Gold Discount card entitling you to save as much as $320 on each course you take within the following 12 months
Alumni Gold Discount Attend your first course and you will receive a personalized Alumni Gold Discount card entitling you to save as much as $320 on each course you take within the following 12 months
Federal State and Local Government Federal State and Local Government employees can take advantage of government discount pricing for Learning Tree Courses
Federal State and Local Government Federal State and Local Government employees can take advantage of government discount pricing for Learning Tree Courses
Training Vouchers With Vouchers any members of your team can attend any Learning Tree Course anytime Available in 5- and 10-Course Packs or larger each Voucher is valid for 12 months and is used in lieu of the tuition for any Learning Tree Public Course
Training Vouchers With Vouchers any members of your team can attend any Learning Tree Course anytime Available in 5- and 10-Course Packs or larger each Voucher is valid for 12 months and is
La aplicacioacuten de Buenas Praacutecticas La organizacioacuten y la aplicacioacuten de la loacutegica de negocio
La aplicacioacuten de los patrones de dominio de la loacutegica en el nivel medio
Ampliacioacuten de tipos de entidad con clases parciales La manipulacioacuten de los grupos de entidades con las clases de loacutegica
de negocio Las mejores praacutecticas en el disentildeo de clase
Proteccioacuten contra la rigidez con el Abierto de Principio Cerrado La extraccioacuten de las nuevas clases con el Principio de Responsabilidad
Individual El uso eficaz de la herencia
Automatizar tareas repetitivas Facilitar los datos de coacutedigo de acceso
La reduccioacuten de la base de datos de coacutedigo de acceso mediante la explotacioacuten de la entidad de navegacioacuten Propiedades
La eliminacioacuten de coacutedigo de actualizacioacuten de base de datos con el cambio de entidad de seguimiento Mejorar el coacutedigo de aplicacioacuten
Automatizacioacuten de revisiones de disentildeo con FxCop y Visual Studio Anaacutelisis
La eliminacioacuten de la duplicacioacuten de coacutedigo a traveacutes de la refactorizacioacuten para los patrones de disentildeo
ltltVolver a Visual Studio y NET Listado de cursos Cursos relacionados
Construyendo Aplicaciones Web con ASPNET y Ajax - Curso 506 ASPNET WebForms Integral Introduccioacuten - Curso 512 Construyendo Aplicaciones Web con ASPNET MVC - Curso 977 NET 4 Programacioacuten - Curso 2620 WPF y Silverlight Introduccioacuten - Curso 975 Servicios Web NET Introduccioacuten - Curso 2601 De programacioacuten C extendido Caracteriacutesticas - Curso 973 Programacioacuten de aplicaciones con SharePoint 2010 - NET Curso 2615 Windows Azure - Curso 2602
used in lieu of the tuition for any Learning Tree Public Course
Training Passport As a Training Passport holder one person can take as many as three hands-on courses in 12 months for as little as $1733 per course Only $5200 - save as much as 45
Training Passport As a Training Passport holder one person can take as many as three hands-on courses in 12 months for as little as $1733 per course Only $5200 - save as much as 45
Premium Pass The NEW Premium Pass gives you more time to take more courses while saving more money Take 4 courses within 24 months for as little as $1700 per course mdash at a price of only $6790 you can SAVE as much as 45 per course
Premium Pass The NEW Premium Pass gives you more time to take more courses while saving more money Take 4 courses within 24 months for as little as $1700 per course mdash at a price of only $6790 you can SAVE as much as 45 per course
EndClass ------------------------------------------- El patroacuten Singleton Asegura que solo se cree una instancia de la clase y provee un punto global de acceso a esta En el siguiente ejemplo crearemos una clase que inicialice y retorne un objeto conexioacuten si no existe y si ya existen que nos retorne la instancia existente El ejemplo estaacute escrito por Enriquillo Mantildeoacuten y lo encontre el dia 22122004 en la paacutegina siguiente httpwwwmicrosoftcomspanishmsdncomunidadmtjnetvoicesart151asp Listado 08 - Patroacuten de creacioacuten Singleton ------------------------------------------- Implementacioacuten del Patroacuten Singleton PublicClassConexion Objeto que contendraacute la instancia compartida Private Shared m_objConexion As Conexion Privatem_FechaCreacion As String El Mutex es una clase que proporciona NET FrameWork Con ella evitaremos que en un ambiente multithread se cree alguacuten tipo de conflicto Private Shared m_Mutex As New SystemThreadingMutex Private Sub New() m_FechaCreacion = DateTimeNowToString End Sub Este meacutetodo eliminaraacute la instancia ya existente Public Shared Sub KillInstance() m_objConexion = Nothing End Sub Este seraacute el meacutetodo que proporcionara el acceso A la instancia existente si no existe creara unanueva (meacutetodo Singleton) Public Shared Function GetInstance() As Conexion m_MutexWaitOne() If m_objConexion Is Nothing Then m_objConexion = New Conexion End If m_MutexReleaseMutex() Return m_objConexion EndFunction Propiedad que presenta la fecha y hora en que Fue creada la instancia PublicReadOnlyPropertyFechaCreada() As String Get Return m_FechaCreacion End Get End Property End Class ------------------------------------------- La implementacioacuten para probar nuestra clase es bastante sencilla para instanciarla
Listado 09 - Patroacuten de creacioacuten instanciarla ------------------------------------------- Try Dim objConexion As SingletonConexion objConexion = SingletonConexionGetInstance TextBox1Text amp= Instancia Creada el + objConexionFechaCreadaampvbCrLf Catch ex As Exception MessageBoxShow(exMessage) End Try ------------------------------------------- Y para inicializarla Listado 10 - Patroacuten de creacioacuten inicializarla ------------------------------------------- Try SingletonConexionKillInstance() TextBox1Text amp= InstanciaEliminada---- ampvbCrLf Catch ex As Exception MessageBoxShow(exMessage) End Try -------------------------------------------
Arriba
Para Saber Mas [1] A Pattern Language Towns Buildings Construction Christopher Alexander 1977 [2] Using Patterns Languages for Object-Oriented Programs Ward Cunningham Kent Beck 1987 [3] Desing Patterns Elements of Reusable Object Oriented Software Gamma Helm Vlissides y Jonson 1994 [4] Patterns Of Enterprise Application Architecture Martiacuten Fowler [5] Java Blueprints httpjavasuncomblueprintspatternscataloghtm [6] NET Enterprise Patterns httpmsdnmicrosoftcomarchitecturepatterns [7] Patterns in Java A Catalog of Reusable Design Patterns Illustrated with UML Mark Grand [8] Te Server Side En esta web encontraremos una seccion dedicada a patrones de disentildeo wwwtheserversidecom
Arriba
Referencia bibliograacutefica Este documento esta COPIADO en su totalidad de un articulo escrito por Aacutelvaro Zabala Ordoacutentildeez y fue publicado en la revista Soacutelo Programadores num 113 con el tiacutetulo Patrones de Disentildeo Un curso practico [I] El articulo original muestra ejemplos en varios lenguajes En esta COPIA los he sustituido por ejemplos escritos exclusivamente en Visual Basic NET y ademaacutes he modificado la redaccioacuten de los paacuterrafos que haciacutean referencia a los ejemplos en otros lenguajes al objeto de darle una coherencia al texto final
Usted aprenderaacute a Aplicar meacutetodos probados para crear adaptables confiables y
eficientes NET y aplicaciones de cliente inteligente Resolver problemas de programacioacuten complejos con los patrones de
disentildeo estaacutendar de la industria Entregar el coacutedigo libre de errores con el desarrollo basado en pruebas
en Visual Studio Cree capas arquitecturas de reutilizacioacuten y evitar la superposicioacuten
funcional Aplicar las mejores praacutecticas para el disentildeo de la clase mejor Simplificar y automatizar las tareas repetitivas
Beneficios del curso El conocimiento de la NET y las bibliotecas no es suficiente para desarrollar aplicaciones robustas patrones de disentildeo probado y las mejores praacutecticas extraiacutedas de la sabiduriacutea de los expertos que ayuda en la creacioacuten de aplicaciones sobre una base soacutelida Este curso proporciona los conocimientos necesarios para resolver los problemas del mundo real de desarrollo de software y ofrecer aplicaciones raacutepida y fiable iquestQuieacuten debe asistir arquitectos programadores y cualquier sistema de desarrollo NET experiencia de programacioacuten a nivel de curso 419 programacioacuten de C o Curso 503 Visual Basic de programacioacuten para NET se supone Manos a la formacioacuten Ganas experiencia en la implementacioacuten NET mejores praacutecticas y patrones de disentildeo Ejercicios completado en VB o C incluyen
La conciliacioacuten de diversos problemas de procesamiento con el patroacuten Estrategia
La simplificacioacuten de un sistema complejo con el patroacuten Fachada La explotacioacuten de Microsoft Entity Framework para acceso a datos y
actualizaciones Creacioacuten de un modelo de objetos de dominio de Negocios Construccioacuten de casos de prueba automatizado Estructuracioacuten de un interfaz de usuario comprobable con el patroacuten
Modelo Vista Controlador La captura y reutilizacioacuten de las pruebas dentro de Visual Studio
Contenido del curso 511
Introduccioacuten Codificacioacuten de las mejores praacutecticas Simplificacioacuten de software con patrones de disentildeo
Simplificacioacuten de programacioacuten complejos con probada patrones de disentildeo La aplicacioacuten de interfaces simples a complejos algoritmos
La unificacioacuten de interfaces de subsistemas para facilitar su uso y reutilizacioacuten
Aplicacioacuten del modelo de fachada Variando la funcionalidad mediante la programacioacuten de interfaces
Fechas del curso
Asistir a eventos destacoacute en persona o en liacutenea con LearningTreeAnyWareTM
Feb 8 hasta 11 Reston VA inscribirse
5to al 8vo 04 Toronto inscribirse
19 a 22 ab Boston (Waltham) inscribirse
04 26ta al 29o Nueva York inscribirse
10 al 13 mayo Los Angelesinscribirse
10 al 13 mayo Ottawa inscribirse
17 al 20 mayo Rockville MD inscribirse
Mayo 24-27 Chicago (Schaumburg) inscribirse
31 mayo a 3 junio Reston VA inscribirse
07 al 10 junio Nueva York inscribirse
Para inscripciones AnyWare por favor regiacutestrese al menos 10 diacuteas antes del inicio del curso Maacutes fechas y lugares En las instalaciones y Formacioacuten personalizada Llevar este o cualquier otro aacuterbol curso de aprendizaje a su ubicacioacuten o la han personalizado para su organizacioacuten Matriacutecula
$ 2890 Norma de matriacutecula
Matriacutecula con un Plan de Ahorro
$ 1700 Premium-Pass
1733 doacutelares Pasaporte de formacioacuten
$ 2250 Vale 10-Pack
$ 2573 Gobierno de descuento
$ 2600 Antiguos Alumnos de descuento de Oro
Alumni Gold Discount
Mejorar la adaptabilidad y la flexibilidad de su aplicacioacuten Explotar el patroacuten Estrategia
Ampliacioacuten de la conducta objeto de forma dinaacutemica El aumento de la funcionalidad sin afectar al coacutedigo existente Composicioacuten de objetos con el patroacuten Decorador
El logro de reutilizacioacuten y flexibilidad La eliminacioacuten de la duplicacioacuten de coacutedigo al esbozar las bases de un
algoritmo Empleando el modelo de plantilla Meacutetodo
Interfaz clases incompatibles La transformacioacuten de una interfaz para agregar valor a coacutedigo
existente Aprovechar el modelo del adaptador
La aplicacioacuten de teacutecnicas de desarrollo basado en pruebas Automatizar las pruebas unitarias
Acortar los ciclos de desarrollo de pruebas automatizadas Mejora de la calidad con una cobertura consistente de pruebas La eliminacioacuten de los errores de regresioacuten con las pruebas
reutilizables La integracioacuten de las pruebas y la codificacioacuten
La aplicacioacuten de la prueba praacutectica de programacioacuten de sesiones para conducir el disentildeo del coacutedigo
Generar retroalimentacioacuten inmediata luz verde para el aumento de la calidad del coacutedigo y los cortos ciclos de desarrollo de funciones
Organizar coordinar y ejecutar los casos de prueba con Visual Studio Arquitectura de una aplicacioacuten de capas Disentildeo de la arquitectura de aplicaciones
Capas arquitecturas de reutilizacioacuten durabilidad y capacidad de ampliacioacuten
Acceso a datos de la capa de negocio La disociacioacuten de creacioacuten de objetos con el patroacuten de la faacutebrica Preservar la identidad del objeto con el patroacuten de identidad Mapa
Programacioacuten niveles de la aplicacioacuten Estructuracioacuten de un cliente Web o de aplicaciones ricas con el
patroacuten Observer Organizador rico estado-aplicaciones con el modelo de Estado Reestructuracioacuten de las tablas de la base de datos sin afectar el
coacutedigo de la aplicacioacuten Modelado de un aacuterea de negocio
Libertador ricos Business Object modelos de las estructuras de base de datos utilizando el patroacuten de modelo de dominio
Cartografiacutea ricos Business Objects a las tablas de base de datos con el patroacuten Data Mapper
El colapso de las jerarquiacuteas de objetos de negocio con el patroacuten de herencia Mapper
La explotacioacuten de la programacioacuten declarativa en Microsoft Entity Framework para implementar clases de datos de cartografiacutea
Attend your first course and you will receive a personalized Alumni Gold Discount card entitling you to save as much as $320 on each course you take within the following 12 months
Alumni Gold Discount Attend your first course and you will receive a personalized Alumni Gold Discount card entitling you to save as much as $320 on each course you take within the following 12 months
Federal State and Local Government Federal State and Local Government employees can take advantage of government discount pricing for Learning Tree Courses
Federal State and Local Government Federal State and Local Government employees can take advantage of government discount pricing for Learning Tree Courses
Training Vouchers With Vouchers any members of your team can attend any Learning Tree Course anytime Available in 5- and 10-Course Packs or larger each Voucher is valid for 12 months and is used in lieu of the tuition for any Learning Tree Public Course
Training Vouchers With Vouchers any members of your team can attend any Learning Tree Course anytime Available in 5- and 10-Course Packs or larger each Voucher is valid for 12 months and is
La aplicacioacuten de Buenas Praacutecticas La organizacioacuten y la aplicacioacuten de la loacutegica de negocio
La aplicacioacuten de los patrones de dominio de la loacutegica en el nivel medio
Ampliacioacuten de tipos de entidad con clases parciales La manipulacioacuten de los grupos de entidades con las clases de loacutegica
de negocio Las mejores praacutecticas en el disentildeo de clase
Proteccioacuten contra la rigidez con el Abierto de Principio Cerrado La extraccioacuten de las nuevas clases con el Principio de Responsabilidad
Individual El uso eficaz de la herencia
Automatizar tareas repetitivas Facilitar los datos de coacutedigo de acceso
La reduccioacuten de la base de datos de coacutedigo de acceso mediante la explotacioacuten de la entidad de navegacioacuten Propiedades
La eliminacioacuten de coacutedigo de actualizacioacuten de base de datos con el cambio de entidad de seguimiento Mejorar el coacutedigo de aplicacioacuten
Automatizacioacuten de revisiones de disentildeo con FxCop y Visual Studio Anaacutelisis
La eliminacioacuten de la duplicacioacuten de coacutedigo a traveacutes de la refactorizacioacuten para los patrones de disentildeo
ltltVolver a Visual Studio y NET Listado de cursos Cursos relacionados
Construyendo Aplicaciones Web con ASPNET y Ajax - Curso 506 ASPNET WebForms Integral Introduccioacuten - Curso 512 Construyendo Aplicaciones Web con ASPNET MVC - Curso 977 NET 4 Programacioacuten - Curso 2620 WPF y Silverlight Introduccioacuten - Curso 975 Servicios Web NET Introduccioacuten - Curso 2601 De programacioacuten C extendido Caracteriacutesticas - Curso 973 Programacioacuten de aplicaciones con SharePoint 2010 - NET Curso 2615 Windows Azure - Curso 2602
used in lieu of the tuition for any Learning Tree Public Course
Training Passport As a Training Passport holder one person can take as many as three hands-on courses in 12 months for as little as $1733 per course Only $5200 - save as much as 45
Training Passport As a Training Passport holder one person can take as many as three hands-on courses in 12 months for as little as $1733 per course Only $5200 - save as much as 45
Premium Pass The NEW Premium Pass gives you more time to take more courses while saving more money Take 4 courses within 24 months for as little as $1700 per course mdash at a price of only $6790 you can SAVE as much as 45 per course
Premium Pass The NEW Premium Pass gives you more time to take more courses while saving more money Take 4 courses within 24 months for as little as $1700 per course mdash at a price of only $6790 you can SAVE as much as 45 per course
Listado 09 - Patroacuten de creacioacuten instanciarla ------------------------------------------- Try Dim objConexion As SingletonConexion objConexion = SingletonConexionGetInstance TextBox1Text amp= Instancia Creada el + objConexionFechaCreadaampvbCrLf Catch ex As Exception MessageBoxShow(exMessage) End Try ------------------------------------------- Y para inicializarla Listado 10 - Patroacuten de creacioacuten inicializarla ------------------------------------------- Try SingletonConexionKillInstance() TextBox1Text amp= InstanciaEliminada---- ampvbCrLf Catch ex As Exception MessageBoxShow(exMessage) End Try -------------------------------------------
Arriba
Para Saber Mas [1] A Pattern Language Towns Buildings Construction Christopher Alexander 1977 [2] Using Patterns Languages for Object-Oriented Programs Ward Cunningham Kent Beck 1987 [3] Desing Patterns Elements of Reusable Object Oriented Software Gamma Helm Vlissides y Jonson 1994 [4] Patterns Of Enterprise Application Architecture Martiacuten Fowler [5] Java Blueprints httpjavasuncomblueprintspatternscataloghtm [6] NET Enterprise Patterns httpmsdnmicrosoftcomarchitecturepatterns [7] Patterns in Java A Catalog of Reusable Design Patterns Illustrated with UML Mark Grand [8] Te Server Side En esta web encontraremos una seccion dedicada a patrones de disentildeo wwwtheserversidecom
Arriba
Referencia bibliograacutefica Este documento esta COPIADO en su totalidad de un articulo escrito por Aacutelvaro Zabala Ordoacutentildeez y fue publicado en la revista Soacutelo Programadores num 113 con el tiacutetulo Patrones de Disentildeo Un curso practico [I] El articulo original muestra ejemplos en varios lenguajes En esta COPIA los he sustituido por ejemplos escritos exclusivamente en Visual Basic NET y ademaacutes he modificado la redaccioacuten de los paacuterrafos que haciacutean referencia a los ejemplos en otros lenguajes al objeto de darle una coherencia al texto final
Usted aprenderaacute a Aplicar meacutetodos probados para crear adaptables confiables y
eficientes NET y aplicaciones de cliente inteligente Resolver problemas de programacioacuten complejos con los patrones de
disentildeo estaacutendar de la industria Entregar el coacutedigo libre de errores con el desarrollo basado en pruebas
en Visual Studio Cree capas arquitecturas de reutilizacioacuten y evitar la superposicioacuten
funcional Aplicar las mejores praacutecticas para el disentildeo de la clase mejor Simplificar y automatizar las tareas repetitivas
Beneficios del curso El conocimiento de la NET y las bibliotecas no es suficiente para desarrollar aplicaciones robustas patrones de disentildeo probado y las mejores praacutecticas extraiacutedas de la sabiduriacutea de los expertos que ayuda en la creacioacuten de aplicaciones sobre una base soacutelida Este curso proporciona los conocimientos necesarios para resolver los problemas del mundo real de desarrollo de software y ofrecer aplicaciones raacutepida y fiable iquestQuieacuten debe asistir arquitectos programadores y cualquier sistema de desarrollo NET experiencia de programacioacuten a nivel de curso 419 programacioacuten de C o Curso 503 Visual Basic de programacioacuten para NET se supone Manos a la formacioacuten Ganas experiencia en la implementacioacuten NET mejores praacutecticas y patrones de disentildeo Ejercicios completado en VB o C incluyen
La conciliacioacuten de diversos problemas de procesamiento con el patroacuten Estrategia
La simplificacioacuten de un sistema complejo con el patroacuten Fachada La explotacioacuten de Microsoft Entity Framework para acceso a datos y
actualizaciones Creacioacuten de un modelo de objetos de dominio de Negocios Construccioacuten de casos de prueba automatizado Estructuracioacuten de un interfaz de usuario comprobable con el patroacuten
Modelo Vista Controlador La captura y reutilizacioacuten de las pruebas dentro de Visual Studio
Contenido del curso 511
Introduccioacuten Codificacioacuten de las mejores praacutecticas Simplificacioacuten de software con patrones de disentildeo
Simplificacioacuten de programacioacuten complejos con probada patrones de disentildeo La aplicacioacuten de interfaces simples a complejos algoritmos
La unificacioacuten de interfaces de subsistemas para facilitar su uso y reutilizacioacuten
Aplicacioacuten del modelo de fachada Variando la funcionalidad mediante la programacioacuten de interfaces
Fechas del curso
Asistir a eventos destacoacute en persona o en liacutenea con LearningTreeAnyWareTM
Feb 8 hasta 11 Reston VA inscribirse
5to al 8vo 04 Toronto inscribirse
19 a 22 ab Boston (Waltham) inscribirse
04 26ta al 29o Nueva York inscribirse
10 al 13 mayo Los Angelesinscribirse
10 al 13 mayo Ottawa inscribirse
17 al 20 mayo Rockville MD inscribirse
Mayo 24-27 Chicago (Schaumburg) inscribirse
31 mayo a 3 junio Reston VA inscribirse
07 al 10 junio Nueva York inscribirse
Para inscripciones AnyWare por favor regiacutestrese al menos 10 diacuteas antes del inicio del curso Maacutes fechas y lugares En las instalaciones y Formacioacuten personalizada Llevar este o cualquier otro aacuterbol curso de aprendizaje a su ubicacioacuten o la han personalizado para su organizacioacuten Matriacutecula
$ 2890 Norma de matriacutecula
Matriacutecula con un Plan de Ahorro
$ 1700 Premium-Pass
1733 doacutelares Pasaporte de formacioacuten
$ 2250 Vale 10-Pack
$ 2573 Gobierno de descuento
$ 2600 Antiguos Alumnos de descuento de Oro
Alumni Gold Discount
Mejorar la adaptabilidad y la flexibilidad de su aplicacioacuten Explotar el patroacuten Estrategia
Ampliacioacuten de la conducta objeto de forma dinaacutemica El aumento de la funcionalidad sin afectar al coacutedigo existente Composicioacuten de objetos con el patroacuten Decorador
El logro de reutilizacioacuten y flexibilidad La eliminacioacuten de la duplicacioacuten de coacutedigo al esbozar las bases de un
algoritmo Empleando el modelo de plantilla Meacutetodo
Interfaz clases incompatibles La transformacioacuten de una interfaz para agregar valor a coacutedigo
existente Aprovechar el modelo del adaptador
La aplicacioacuten de teacutecnicas de desarrollo basado en pruebas Automatizar las pruebas unitarias
Acortar los ciclos de desarrollo de pruebas automatizadas Mejora de la calidad con una cobertura consistente de pruebas La eliminacioacuten de los errores de regresioacuten con las pruebas
reutilizables La integracioacuten de las pruebas y la codificacioacuten
La aplicacioacuten de la prueba praacutectica de programacioacuten de sesiones para conducir el disentildeo del coacutedigo
Generar retroalimentacioacuten inmediata luz verde para el aumento de la calidad del coacutedigo y los cortos ciclos de desarrollo de funciones
Organizar coordinar y ejecutar los casos de prueba con Visual Studio Arquitectura de una aplicacioacuten de capas Disentildeo de la arquitectura de aplicaciones
Capas arquitecturas de reutilizacioacuten durabilidad y capacidad de ampliacioacuten
Acceso a datos de la capa de negocio La disociacioacuten de creacioacuten de objetos con el patroacuten de la faacutebrica Preservar la identidad del objeto con el patroacuten de identidad Mapa
Programacioacuten niveles de la aplicacioacuten Estructuracioacuten de un cliente Web o de aplicaciones ricas con el
patroacuten Observer Organizador rico estado-aplicaciones con el modelo de Estado Reestructuracioacuten de las tablas de la base de datos sin afectar el
coacutedigo de la aplicacioacuten Modelado de un aacuterea de negocio
Libertador ricos Business Object modelos de las estructuras de base de datos utilizando el patroacuten de modelo de dominio
Cartografiacutea ricos Business Objects a las tablas de base de datos con el patroacuten Data Mapper
El colapso de las jerarquiacuteas de objetos de negocio con el patroacuten de herencia Mapper
La explotacioacuten de la programacioacuten declarativa en Microsoft Entity Framework para implementar clases de datos de cartografiacutea
Attend your first course and you will receive a personalized Alumni Gold Discount card entitling you to save as much as $320 on each course you take within the following 12 months
Alumni Gold Discount Attend your first course and you will receive a personalized Alumni Gold Discount card entitling you to save as much as $320 on each course you take within the following 12 months
Federal State and Local Government Federal State and Local Government employees can take advantage of government discount pricing for Learning Tree Courses
Federal State and Local Government Federal State and Local Government employees can take advantage of government discount pricing for Learning Tree Courses
Training Vouchers With Vouchers any members of your team can attend any Learning Tree Course anytime Available in 5- and 10-Course Packs or larger each Voucher is valid for 12 months and is used in lieu of the tuition for any Learning Tree Public Course
Training Vouchers With Vouchers any members of your team can attend any Learning Tree Course anytime Available in 5- and 10-Course Packs or larger each Voucher is valid for 12 months and is
La aplicacioacuten de Buenas Praacutecticas La organizacioacuten y la aplicacioacuten de la loacutegica de negocio
La aplicacioacuten de los patrones de dominio de la loacutegica en el nivel medio
Ampliacioacuten de tipos de entidad con clases parciales La manipulacioacuten de los grupos de entidades con las clases de loacutegica
de negocio Las mejores praacutecticas en el disentildeo de clase
Proteccioacuten contra la rigidez con el Abierto de Principio Cerrado La extraccioacuten de las nuevas clases con el Principio de Responsabilidad
Individual El uso eficaz de la herencia
Automatizar tareas repetitivas Facilitar los datos de coacutedigo de acceso
La reduccioacuten de la base de datos de coacutedigo de acceso mediante la explotacioacuten de la entidad de navegacioacuten Propiedades
La eliminacioacuten de coacutedigo de actualizacioacuten de base de datos con el cambio de entidad de seguimiento Mejorar el coacutedigo de aplicacioacuten
Automatizacioacuten de revisiones de disentildeo con FxCop y Visual Studio Anaacutelisis
La eliminacioacuten de la duplicacioacuten de coacutedigo a traveacutes de la refactorizacioacuten para los patrones de disentildeo
ltltVolver a Visual Studio y NET Listado de cursos Cursos relacionados
Construyendo Aplicaciones Web con ASPNET y Ajax - Curso 506 ASPNET WebForms Integral Introduccioacuten - Curso 512 Construyendo Aplicaciones Web con ASPNET MVC - Curso 977 NET 4 Programacioacuten - Curso 2620 WPF y Silverlight Introduccioacuten - Curso 975 Servicios Web NET Introduccioacuten - Curso 2601 De programacioacuten C extendido Caracteriacutesticas - Curso 973 Programacioacuten de aplicaciones con SharePoint 2010 - NET Curso 2615 Windows Azure - Curso 2602
used in lieu of the tuition for any Learning Tree Public Course
Training Passport As a Training Passport holder one person can take as many as three hands-on courses in 12 months for as little as $1733 per course Only $5200 - save as much as 45
Training Passport As a Training Passport holder one person can take as many as three hands-on courses in 12 months for as little as $1733 per course Only $5200 - save as much as 45
Premium Pass The NEW Premium Pass gives you more time to take more courses while saving more money Take 4 courses within 24 months for as little as $1700 per course mdash at a price of only $6790 you can SAVE as much as 45 per course
Premium Pass The NEW Premium Pass gives you more time to take more courses while saving more money Take 4 courses within 24 months for as little as $1700 per course mdash at a price of only $6790 you can SAVE as much as 45 per course
Usted aprenderaacute a Aplicar meacutetodos probados para crear adaptables confiables y
eficientes NET y aplicaciones de cliente inteligente Resolver problemas de programacioacuten complejos con los patrones de
disentildeo estaacutendar de la industria Entregar el coacutedigo libre de errores con el desarrollo basado en pruebas
en Visual Studio Cree capas arquitecturas de reutilizacioacuten y evitar la superposicioacuten
funcional Aplicar las mejores praacutecticas para el disentildeo de la clase mejor Simplificar y automatizar las tareas repetitivas
Beneficios del curso El conocimiento de la NET y las bibliotecas no es suficiente para desarrollar aplicaciones robustas patrones de disentildeo probado y las mejores praacutecticas extraiacutedas de la sabiduriacutea de los expertos que ayuda en la creacioacuten de aplicaciones sobre una base soacutelida Este curso proporciona los conocimientos necesarios para resolver los problemas del mundo real de desarrollo de software y ofrecer aplicaciones raacutepida y fiable iquestQuieacuten debe asistir arquitectos programadores y cualquier sistema de desarrollo NET experiencia de programacioacuten a nivel de curso 419 programacioacuten de C o Curso 503 Visual Basic de programacioacuten para NET se supone Manos a la formacioacuten Ganas experiencia en la implementacioacuten NET mejores praacutecticas y patrones de disentildeo Ejercicios completado en VB o C incluyen
La conciliacioacuten de diversos problemas de procesamiento con el patroacuten Estrategia
La simplificacioacuten de un sistema complejo con el patroacuten Fachada La explotacioacuten de Microsoft Entity Framework para acceso a datos y
actualizaciones Creacioacuten de un modelo de objetos de dominio de Negocios Construccioacuten de casos de prueba automatizado Estructuracioacuten de un interfaz de usuario comprobable con el patroacuten
Modelo Vista Controlador La captura y reutilizacioacuten de las pruebas dentro de Visual Studio
Contenido del curso 511
Introduccioacuten Codificacioacuten de las mejores praacutecticas Simplificacioacuten de software con patrones de disentildeo
Simplificacioacuten de programacioacuten complejos con probada patrones de disentildeo La aplicacioacuten de interfaces simples a complejos algoritmos
La unificacioacuten de interfaces de subsistemas para facilitar su uso y reutilizacioacuten
Aplicacioacuten del modelo de fachada Variando la funcionalidad mediante la programacioacuten de interfaces
Fechas del curso
Asistir a eventos destacoacute en persona o en liacutenea con LearningTreeAnyWareTM
Feb 8 hasta 11 Reston VA inscribirse
5to al 8vo 04 Toronto inscribirse
19 a 22 ab Boston (Waltham) inscribirse
04 26ta al 29o Nueva York inscribirse
10 al 13 mayo Los Angelesinscribirse
10 al 13 mayo Ottawa inscribirse
17 al 20 mayo Rockville MD inscribirse
Mayo 24-27 Chicago (Schaumburg) inscribirse
31 mayo a 3 junio Reston VA inscribirse
07 al 10 junio Nueva York inscribirse
Para inscripciones AnyWare por favor regiacutestrese al menos 10 diacuteas antes del inicio del curso Maacutes fechas y lugares En las instalaciones y Formacioacuten personalizada Llevar este o cualquier otro aacuterbol curso de aprendizaje a su ubicacioacuten o la han personalizado para su organizacioacuten Matriacutecula
$ 2890 Norma de matriacutecula
Matriacutecula con un Plan de Ahorro
$ 1700 Premium-Pass
1733 doacutelares Pasaporte de formacioacuten
$ 2250 Vale 10-Pack
$ 2573 Gobierno de descuento
$ 2600 Antiguos Alumnos de descuento de Oro
Alumni Gold Discount
Mejorar la adaptabilidad y la flexibilidad de su aplicacioacuten Explotar el patroacuten Estrategia
Ampliacioacuten de la conducta objeto de forma dinaacutemica El aumento de la funcionalidad sin afectar al coacutedigo existente Composicioacuten de objetos con el patroacuten Decorador
El logro de reutilizacioacuten y flexibilidad La eliminacioacuten de la duplicacioacuten de coacutedigo al esbozar las bases de un
algoritmo Empleando el modelo de plantilla Meacutetodo
Interfaz clases incompatibles La transformacioacuten de una interfaz para agregar valor a coacutedigo
existente Aprovechar el modelo del adaptador
La aplicacioacuten de teacutecnicas de desarrollo basado en pruebas Automatizar las pruebas unitarias
Acortar los ciclos de desarrollo de pruebas automatizadas Mejora de la calidad con una cobertura consistente de pruebas La eliminacioacuten de los errores de regresioacuten con las pruebas
reutilizables La integracioacuten de las pruebas y la codificacioacuten
La aplicacioacuten de la prueba praacutectica de programacioacuten de sesiones para conducir el disentildeo del coacutedigo
Generar retroalimentacioacuten inmediata luz verde para el aumento de la calidad del coacutedigo y los cortos ciclos de desarrollo de funciones
Organizar coordinar y ejecutar los casos de prueba con Visual Studio Arquitectura de una aplicacioacuten de capas Disentildeo de la arquitectura de aplicaciones
Capas arquitecturas de reutilizacioacuten durabilidad y capacidad de ampliacioacuten
Acceso a datos de la capa de negocio La disociacioacuten de creacioacuten de objetos con el patroacuten de la faacutebrica Preservar la identidad del objeto con el patroacuten de identidad Mapa
Programacioacuten niveles de la aplicacioacuten Estructuracioacuten de un cliente Web o de aplicaciones ricas con el
patroacuten Observer Organizador rico estado-aplicaciones con el modelo de Estado Reestructuracioacuten de las tablas de la base de datos sin afectar el
coacutedigo de la aplicacioacuten Modelado de un aacuterea de negocio
Libertador ricos Business Object modelos de las estructuras de base de datos utilizando el patroacuten de modelo de dominio
Cartografiacutea ricos Business Objects a las tablas de base de datos con el patroacuten Data Mapper
El colapso de las jerarquiacuteas de objetos de negocio con el patroacuten de herencia Mapper
La explotacioacuten de la programacioacuten declarativa en Microsoft Entity Framework para implementar clases de datos de cartografiacutea
Attend your first course and you will receive a personalized Alumni Gold Discount card entitling you to save as much as $320 on each course you take within the following 12 months
Alumni Gold Discount Attend your first course and you will receive a personalized Alumni Gold Discount card entitling you to save as much as $320 on each course you take within the following 12 months
Federal State and Local Government Federal State and Local Government employees can take advantage of government discount pricing for Learning Tree Courses
Federal State and Local Government Federal State and Local Government employees can take advantage of government discount pricing for Learning Tree Courses
Training Vouchers With Vouchers any members of your team can attend any Learning Tree Course anytime Available in 5- and 10-Course Packs or larger each Voucher is valid for 12 months and is used in lieu of the tuition for any Learning Tree Public Course
Training Vouchers With Vouchers any members of your team can attend any Learning Tree Course anytime Available in 5- and 10-Course Packs or larger each Voucher is valid for 12 months and is
La aplicacioacuten de Buenas Praacutecticas La organizacioacuten y la aplicacioacuten de la loacutegica de negocio
La aplicacioacuten de los patrones de dominio de la loacutegica en el nivel medio
Ampliacioacuten de tipos de entidad con clases parciales La manipulacioacuten de los grupos de entidades con las clases de loacutegica
de negocio Las mejores praacutecticas en el disentildeo de clase
Proteccioacuten contra la rigidez con el Abierto de Principio Cerrado La extraccioacuten de las nuevas clases con el Principio de Responsabilidad
Individual El uso eficaz de la herencia
Automatizar tareas repetitivas Facilitar los datos de coacutedigo de acceso
La reduccioacuten de la base de datos de coacutedigo de acceso mediante la explotacioacuten de la entidad de navegacioacuten Propiedades
La eliminacioacuten de coacutedigo de actualizacioacuten de base de datos con el cambio de entidad de seguimiento Mejorar el coacutedigo de aplicacioacuten
Automatizacioacuten de revisiones de disentildeo con FxCop y Visual Studio Anaacutelisis
La eliminacioacuten de la duplicacioacuten de coacutedigo a traveacutes de la refactorizacioacuten para los patrones de disentildeo
ltltVolver a Visual Studio y NET Listado de cursos Cursos relacionados
Construyendo Aplicaciones Web con ASPNET y Ajax - Curso 506 ASPNET WebForms Integral Introduccioacuten - Curso 512 Construyendo Aplicaciones Web con ASPNET MVC - Curso 977 NET 4 Programacioacuten - Curso 2620 WPF y Silverlight Introduccioacuten - Curso 975 Servicios Web NET Introduccioacuten - Curso 2601 De programacioacuten C extendido Caracteriacutesticas - Curso 973 Programacioacuten de aplicaciones con SharePoint 2010 - NET Curso 2615 Windows Azure - Curso 2602
used in lieu of the tuition for any Learning Tree Public Course
Training Passport As a Training Passport holder one person can take as many as three hands-on courses in 12 months for as little as $1733 per course Only $5200 - save as much as 45
Training Passport As a Training Passport holder one person can take as many as three hands-on courses in 12 months for as little as $1733 per course Only $5200 - save as much as 45
Premium Pass The NEW Premium Pass gives you more time to take more courses while saving more money Take 4 courses within 24 months for as little as $1700 per course mdash at a price of only $6790 you can SAVE as much as 45 per course
Premium Pass The NEW Premium Pass gives you more time to take more courses while saving more money Take 4 courses within 24 months for as little as $1700 per course mdash at a price of only $6790 you can SAVE as much as 45 per course
Mejorar la adaptabilidad y la flexibilidad de su aplicacioacuten Explotar el patroacuten Estrategia
Ampliacioacuten de la conducta objeto de forma dinaacutemica El aumento de la funcionalidad sin afectar al coacutedigo existente Composicioacuten de objetos con el patroacuten Decorador
El logro de reutilizacioacuten y flexibilidad La eliminacioacuten de la duplicacioacuten de coacutedigo al esbozar las bases de un
algoritmo Empleando el modelo de plantilla Meacutetodo
Interfaz clases incompatibles La transformacioacuten de una interfaz para agregar valor a coacutedigo
existente Aprovechar el modelo del adaptador
La aplicacioacuten de teacutecnicas de desarrollo basado en pruebas Automatizar las pruebas unitarias
Acortar los ciclos de desarrollo de pruebas automatizadas Mejora de la calidad con una cobertura consistente de pruebas La eliminacioacuten de los errores de regresioacuten con las pruebas
reutilizables La integracioacuten de las pruebas y la codificacioacuten
La aplicacioacuten de la prueba praacutectica de programacioacuten de sesiones para conducir el disentildeo del coacutedigo
Generar retroalimentacioacuten inmediata luz verde para el aumento de la calidad del coacutedigo y los cortos ciclos de desarrollo de funciones
Organizar coordinar y ejecutar los casos de prueba con Visual Studio Arquitectura de una aplicacioacuten de capas Disentildeo de la arquitectura de aplicaciones
Capas arquitecturas de reutilizacioacuten durabilidad y capacidad de ampliacioacuten
Acceso a datos de la capa de negocio La disociacioacuten de creacioacuten de objetos con el patroacuten de la faacutebrica Preservar la identidad del objeto con el patroacuten de identidad Mapa
Programacioacuten niveles de la aplicacioacuten Estructuracioacuten de un cliente Web o de aplicaciones ricas con el
patroacuten Observer Organizador rico estado-aplicaciones con el modelo de Estado Reestructuracioacuten de las tablas de la base de datos sin afectar el
coacutedigo de la aplicacioacuten Modelado de un aacuterea de negocio
Libertador ricos Business Object modelos de las estructuras de base de datos utilizando el patroacuten de modelo de dominio
Cartografiacutea ricos Business Objects a las tablas de base de datos con el patroacuten Data Mapper
El colapso de las jerarquiacuteas de objetos de negocio con el patroacuten de herencia Mapper
La explotacioacuten de la programacioacuten declarativa en Microsoft Entity Framework para implementar clases de datos de cartografiacutea
Attend your first course and you will receive a personalized Alumni Gold Discount card entitling you to save as much as $320 on each course you take within the following 12 months
Alumni Gold Discount Attend your first course and you will receive a personalized Alumni Gold Discount card entitling you to save as much as $320 on each course you take within the following 12 months
Federal State and Local Government Federal State and Local Government employees can take advantage of government discount pricing for Learning Tree Courses
Federal State and Local Government Federal State and Local Government employees can take advantage of government discount pricing for Learning Tree Courses
Training Vouchers With Vouchers any members of your team can attend any Learning Tree Course anytime Available in 5- and 10-Course Packs or larger each Voucher is valid for 12 months and is used in lieu of the tuition for any Learning Tree Public Course
Training Vouchers With Vouchers any members of your team can attend any Learning Tree Course anytime Available in 5- and 10-Course Packs or larger each Voucher is valid for 12 months and is
La aplicacioacuten de Buenas Praacutecticas La organizacioacuten y la aplicacioacuten de la loacutegica de negocio
La aplicacioacuten de los patrones de dominio de la loacutegica en el nivel medio
Ampliacioacuten de tipos de entidad con clases parciales La manipulacioacuten de los grupos de entidades con las clases de loacutegica
de negocio Las mejores praacutecticas en el disentildeo de clase
Proteccioacuten contra la rigidez con el Abierto de Principio Cerrado La extraccioacuten de las nuevas clases con el Principio de Responsabilidad
Individual El uso eficaz de la herencia
Automatizar tareas repetitivas Facilitar los datos de coacutedigo de acceso
La reduccioacuten de la base de datos de coacutedigo de acceso mediante la explotacioacuten de la entidad de navegacioacuten Propiedades
La eliminacioacuten de coacutedigo de actualizacioacuten de base de datos con el cambio de entidad de seguimiento Mejorar el coacutedigo de aplicacioacuten
Automatizacioacuten de revisiones de disentildeo con FxCop y Visual Studio Anaacutelisis
La eliminacioacuten de la duplicacioacuten de coacutedigo a traveacutes de la refactorizacioacuten para los patrones de disentildeo
ltltVolver a Visual Studio y NET Listado de cursos Cursos relacionados
Construyendo Aplicaciones Web con ASPNET y Ajax - Curso 506 ASPNET WebForms Integral Introduccioacuten - Curso 512 Construyendo Aplicaciones Web con ASPNET MVC - Curso 977 NET 4 Programacioacuten - Curso 2620 WPF y Silverlight Introduccioacuten - Curso 975 Servicios Web NET Introduccioacuten - Curso 2601 De programacioacuten C extendido Caracteriacutesticas - Curso 973 Programacioacuten de aplicaciones con SharePoint 2010 - NET Curso 2615 Windows Azure - Curso 2602
used in lieu of the tuition for any Learning Tree Public Course
Training Passport As a Training Passport holder one person can take as many as three hands-on courses in 12 months for as little as $1733 per course Only $5200 - save as much as 45
Training Passport As a Training Passport holder one person can take as many as three hands-on courses in 12 months for as little as $1733 per course Only $5200 - save as much as 45
Premium Pass The NEW Premium Pass gives you more time to take more courses while saving more money Take 4 courses within 24 months for as little as $1700 per course mdash at a price of only $6790 you can SAVE as much as 45 per course
Premium Pass The NEW Premium Pass gives you more time to take more courses while saving more money Take 4 courses within 24 months for as little as $1700 per course mdash at a price of only $6790 you can SAVE as much as 45 per course
La aplicacioacuten de Buenas Praacutecticas La organizacioacuten y la aplicacioacuten de la loacutegica de negocio
La aplicacioacuten de los patrones de dominio de la loacutegica en el nivel medio
Ampliacioacuten de tipos de entidad con clases parciales La manipulacioacuten de los grupos de entidades con las clases de loacutegica
de negocio Las mejores praacutecticas en el disentildeo de clase
Proteccioacuten contra la rigidez con el Abierto de Principio Cerrado La extraccioacuten de las nuevas clases con el Principio de Responsabilidad
Individual El uso eficaz de la herencia
Automatizar tareas repetitivas Facilitar los datos de coacutedigo de acceso
La reduccioacuten de la base de datos de coacutedigo de acceso mediante la explotacioacuten de la entidad de navegacioacuten Propiedades
La eliminacioacuten de coacutedigo de actualizacioacuten de base de datos con el cambio de entidad de seguimiento Mejorar el coacutedigo de aplicacioacuten
Automatizacioacuten de revisiones de disentildeo con FxCop y Visual Studio Anaacutelisis
La eliminacioacuten de la duplicacioacuten de coacutedigo a traveacutes de la refactorizacioacuten para los patrones de disentildeo
ltltVolver a Visual Studio y NET Listado de cursos Cursos relacionados
Construyendo Aplicaciones Web con ASPNET y Ajax - Curso 506 ASPNET WebForms Integral Introduccioacuten - Curso 512 Construyendo Aplicaciones Web con ASPNET MVC - Curso 977 NET 4 Programacioacuten - Curso 2620 WPF y Silverlight Introduccioacuten - Curso 975 Servicios Web NET Introduccioacuten - Curso 2601 De programacioacuten C extendido Caracteriacutesticas - Curso 973 Programacioacuten de aplicaciones con SharePoint 2010 - NET Curso 2615 Windows Azure - Curso 2602
used in lieu of the tuition for any Learning Tree Public Course
Training Passport As a Training Passport holder one person can take as many as three hands-on courses in 12 months for as little as $1733 per course Only $5200 - save as much as 45
Training Passport As a Training Passport holder one person can take as many as three hands-on courses in 12 months for as little as $1733 per course Only $5200 - save as much as 45
Premium Pass The NEW Premium Pass gives you more time to take more courses while saving more money Take 4 courses within 24 months for as little as $1700 per course mdash at a price of only $6790 you can SAVE as much as 45 per course
Premium Pass The NEW Premium Pass gives you more time to take more courses while saving more money Take 4 courses within 24 months for as little as $1700 per course mdash at a price of only $6790 you can SAVE as much as 45 per course