2009-05-23 11 views

Respuesta

19

Sugeriría Inversion of Control/Dependency Injection. Esto es muy útil cuando se realizan pruebas unitarias, ya que le permite suministrar dependencias simuladas para la clase bajo prueba. Proxy también es muy útil cuando se envuelve una clase sellada para que sea más útil en escenarios de prueba.

Si hago otra sugerencia, me gustaría centrarse en el aprendizaje, que los patrones son útiles en diferentes situaciones, en lugar de centrarse en el aprendizaje de cómo implementar un patrón particular. Casi siempre puedes encontrar una implementación de referencia para usar al implementar un patrón, pero ser capaz de discernir cuándo y qué patrón usar hará que los patrones sean más útiles. Si comienzas a hacerlo de otra manera, terminas haciendo que tu problema se ajuste a los patrones que conoces en lugar de aplicar el patrón correcto que se ajusta al problema.

+2

PLUS PLUS ON: "Me enfocaría en aprender qué patrones son útiles en diferentes situaciones en lugar de centrarme en aprender cómo implementar un patrón en particular". El mayor problema con los patrones de diseño es que los tontos los usan inapropiadamente, porque leen el libro y creen que el libro dice que es "correcto" cuando de hecho no dice tal cosa ... GOF es explícitamente "una caja de herramientas". NO es una meta-receta proscriptiva. – corlettk

+1

+1 para el segundo párrafo de su respuesta. Es mucho más útil ver los patrones de diseño como un vocabulario para describir soluciones comunes a problemas comunes. Preguntar qué patrones de diseño aprender primero es como preguntar qué palabras médicas debes memorizar primero para convertirte en médico. –

0

Singleton se utiliza muy muy fuertemente en muchos lugares. El patrón Adapter también se usa con mucha frecuencia. Esos dos están entre los más utilizados, y son relativamente simples; entenderlos puede ser útil para comprender patrones y puede ser útil para su desarrollo.

+2

Singleton es, básicamente, en desuso, sobre todo porque todo lo que el singleton no se puede probar sin el singleton. Por ejemplo: puedes probar un DAO sin una base de datos usando stubs, excepto por ese método DB.conn() de dang. Pero sí, verá mucho en el código existente, y todavía se usa con demasiada frecuencia. ConnectionFactory.getInstance() podría devolver la misma conexión cada vez, sin bloquearlo en una implimentation. – corlettk

4

creo que la utilidad de los patrones de diseño reside más en el vocabulario adicional de que ellos, más tan que el uso de un único (o un par) de los patrones acompaña. Tener un conocimiento práctico de los patrones comunes en el libro Gang of Four es extremadamente útil al tratar de comunicarse con otros desarrolladores.

Sugiero leer el índice, luego leer el resumen del catálogo de patrones. Si tiene poco tiempo, saber en general qué simbolizan los patrones sería beneficioso, de modo que cuando NECESITE conocer los detalles de un patrón, sabría dónde mirar. Esto es opuesto a conocer los patrones State o Singleton en sus propias islas pequeñas.

7

Por qué no leer un resumen de ellos, this summary for example, y ver si algunos parecen que podrían ser útiles para , y vale la pena investigar más.

2

Abstract Factory. Utilizado en Inyección de Dependencia (DI).
Si lo entiende, ya sabe cómo funciona DI, y luego sabe qué es la Inversión de control.

6

Diseño Los patrones no son el tipo de tema sobre el que rápidamente comienza a leer y aprender. Tendrás que hacer muchos ejercicios y luego aplicar lo que has aprendido en escenarios reales. Si su tiempo es realmente tan limitado, entonces puede estar perdiendo el tiempo. Sugiero el libro Head First Design Patterns, que es excelente.

Pero su conocimiento de OO debe ser bastante alto para empezar.

+0

1 Gran libro para comenzar a aprender patrones de diseño con –

1

El patrón "Comando" es un poco más complejo que Abstract Factory, pero se usa comúnmente y es potente.

Otro patrón que en realidad nunca he tenido una buena oportunidad de utilizar es el modelo "Compuesto". Este le dará una buena exposición a las técnicas OO, y podría ser útil si alguna vez lo necesita.

6

Su pregunta es como preguntar: "Quiero aprender C#, pero sólo tienen tiempo para aprender algunas palabras clave. ¿Cuáles debo aprender?"

Cualquier patrón de diseño no vive en el vacío. Todos definen diferentes aspectos de cómo funciona una aplicación. Es poco probable que una aplicación requiera todos los patrones de diseño conocidos, pero cada aplicación es diferente y usted Necesitará una combinación diferente de ellos para cada aplicación. Saber qué no usar es tan importante como saber qué usar. Necesita al menos un conocimiento conversacional de todos los patrones de diseño principales.

Comience con this list y el Head First Design Patterns libro mencionado anteriormente aquí.Aprenda un poco sobre todos ellos.Y no se angustie por no tener el tiempo, ¡haga el tiempo! Permanezca fuera de FaceBook un par de noches adicionales u omita una repetición de Star Trek o dos.

Además, evite al principio the GoF patterns book a menos que sea realmente un gurú de OO. Es bastante denso e inmediatamente asume que entiendes el valor y la necesidad de patrones. Es un gran libro, simplemente no es un gran primer libro.

+0

"Saber qué no usar es tan importante como saber qué usar." Amén hermano. – corlettk

+0

¿Puedo especie de paráfrasis que: GOF es "aceptable" si su un programador experimentado, ya sea en OO (preferible) o de procedimiento (como yo) que era/es aprender OO ... experiencias que da la comprensión de la condición " motivaciones de orden superior "de diseño de software realmente bueno. Solo digamos que GOF no es para noobs. – corlettk

+0

Estoy de acuerdo, corlettk. Soy un procedimiento refugiado yo mismo. –

1

pensé que 'peso mosca' era un patrón muy fresco que realmente no tiene ninguna relación con cualquier otra cosa. (Es decir, nunca decidiría usar otro patrón en su lugar).

Pero si va a aprender solo un patrón, 'Visitor' es el que desea. Es un concepto que se extiende mucho más allá de la programación de OO; lo ayudará a comprender conceptos de programación funcional como map y fold. O incluso métodos OO como collect y inject.

1

Estrategia está en mi lista de favoritos. Es una excelente manera de eliminar el código de lógica condicional que solo existe para respaldar la existencia de múltiples formas de hacer las cosas, y ayuda a extraer el código de "política" para que pueda probarse de forma aislada.

1

El GoF (Banda de los Cuatro) libro recomienda éstos como punto de partida: (en la "guía de lectura" en el libro)

comenzar con el más simple y más patrones comunes:

  1. Abstract Factory
  2. adaptador
  3. Compuesto
  4. decorador
  5. Factory Method
  6. Observador
  7. Estrategia
  8. plantilla Método
1

me he sentido siempre personalmente que usted no "aprende" patrones de diseño ... se aprende a "reconocer" ellos. En otras palabras, cuando leí por primera vez Design Patterns, muchos de ellos parecían soluciones que simplemente se caían de forma natural en las aplicaciones que había creado antes, pero tal vez no lo hice exactamente igual o tan limpiamente.

En mi opinión, Design Patterns es más sobre la estandarización de las soluciones que se han materializado una y otra vez en lugar de enseñarle cómo resolver un problema en particular.

Cuestiones relacionadas