2009-06-14 20 views
5

Duplicar posibles:
How do you know when to use design patterns?patrones de diseño

¿Cómo se puede entender de E/tomar la decisión acerca de "¿Cuándo utilizar lo patrones de diseño"?

¿Cuáles son los factores a observar al tomar decisiones sobre el uso de un patrón de diseño apropiado en un lugar apropiado?

+3

¿Has leído el libro? Leer el libro. –

+5

Creo que esto puede ser un duplicado de http://stackoverflow.com/questions/85272/how-do-you-know-when-to-use-design-patterns –

+0

Gracias Steve! El enlace realmente ayudó. –

Respuesta

3

Generalmente, si lo haces bien, hay un patrón para ello. Tal vez ahora sepas que lo estás usando.

Si lo está haciendo mal, hay un patrón anti para él. Pero usted definitivamente no sé si lo está usando.

+0

Gracioso (es decir, irónico) pero no útil. – ChrisW

2

Gang of Four (GoF) patrones son un buen recurso.

+3

Las discusiones en el sitio web de GoF son muy abstractas. Los encontré difíciles de entender. –

+0

Cualquier discusión sobre Patrones de diseño será abstracta. Es un concepto de muy alto nivel que se aplica a la mayoría de los idiomas. Lo bueno del enlace que proporcionó Steve es que para cada patrón, obtienes un ejemplo del mundo real con código real. Debería ser capaz de descubrir aplicaciones reales a partir de esos ejemplos. –

0

Todos los patrones bien definidos tienen fondo, contexto y el problema resuelto por el patrón.

El objetivo de un patrón es decirte cuándo es apropiado.

2

No siempre debe establecer que su software se ajuste a un patrón de diseño, pero si coincide con uno lo usa. En muchos casos, la mayoría de las cosas que hace tendrán un patrón de diseño que es simplemente un patrón que se observó desde muchas implementaciones de software diferentes como comunes.

Por ejemplo, si tiene un conjunto de clases que necesitan sincronizarse. Bueno, eso funciona bien con el patrón Observer o Publish/Subscribe, donde una clase es el notificador y la otra escucha las notificaciones. Observer pattern

O supongamos que quiere limitar el uso de memoria en un motor de juego, entonces puede crear una ObjectPool. Object pool

o tal vez quiera simplificar un conjunto de objetos en una API simplr a continuación, utilizar el patrón de la fachada: Facade pattern

Muchas veces simplemente utilizando patrones funcionales como encapsulación o herencia están bien. Depende del problema En la mayoría de los casos, gran parte de lo que intentas codificar será resuelto en un patrón, pero los patrones no son la única forma de codificar. En muchos casos, comienzas a diseñar o tienes una necesidad y se convierte en un patrón.

Recuerde que los patrones se originaron al observar muchos tipos de problemas de software, no es el punto de partida, sino el reflejo de la arquitectura del software.

Design pattern (computer science)

Muchas muestras de patrones en dofactory.com: Design pattern tutorial by dofactory

Python patrones de diseño: http://video.google.com/videoplay?docid=-3035093035748181693

Forzar patrones de diseño es como forzar OO. Debe venir naturalmente de las necesidades en el proyecto en cuestión.

0

Me parece que si estoy pirateando un programa, es casi imposible usar patrones de diseño, pero si diseña su programa, puede ver lo que quiere hacer y los patrones de diseño comienzan a verse en su aplicación.

Por ejemplo, si ve que hay una clase que dirige el flujo de la aplicación, entonces el patrón del controlador tiene sentido.

La otra forma de utilizar patrones de diseño es escribir su programa, hacerlo funcionar y luego refactorizar utilizando patrones de diseño. Creo que Martin Fowler escribió un libro sobre este tema, pero no estoy seguro del autor.

De cualquier forma, es útil saber qué quiere hacer para ayudar a decidir qué patrones funcionan mejor.

+0

Sí, Fowler's 'Refactoring: Mejorando el diseño del código existente'. Es el mejor libro sobre el tema que he encontrado. – CurtainDog

+0

Lo busqué, el libro es "Refactorización de patrones" http://www.industriallogic.com/xp/refactoring/ –