18

Recientemente realicé realmente la inyección de dependencia y la maravilla del patrón de diseño del Decorador y lo estoy usando por todos lados.¿Qué convención de nomenclatura usas para el Patrón Decorador?

Tan maravilloso como es, sin embargo, una cosa con la que he estado teniendo problemas es nombrar mis clases de decorador, así que me gustaría saber qué hacen los demás. ¿Siempre agregas la palabra Decorador? ¿Incorporas el nombre de la interfaz a su decoración? ¿Obtienen su propio espacio de nombres?

¿Qué hacen chicos?

Respuesta

2

Generalmente, cuando el patrón está encapsulado en un objeto (frente a una colección de objetos), entonces es más claro y fácil incluir el nombre del patrón en la clase, en este caso usando Decorator como sufijo. Esto funciona bien para proxies, decoradores, fábricas, adaptadores, etc., pero no funciona para otros patrones donde se necesita un grupo de objetos en la implementación del patrón como un puente (es decir, ¿qué objeto tomaría aproximadamente el sufijo -bridge?)

17

Evito el uso de nombres de patrones de diseño. Creo que esto pertenece a la documentación si está en alguna parte. Nombra la clase/función del decorador después de lo que hace o representa. El hecho de que adorna o puentea o enlaza o representa o re-representa es de poca importancia.

Cada vez que nombra una cadena, ¿agrega un sufijo String? Suena como hgrnNotation para mí, y eso es algo que trato de evitar.

+0

'hgrnNotation' == Notación húngara, para los confundidos. –

5

Llámalo por lo que hace.

Tengo un montón de decoradores para una interfaz IPrinter. Se llaman:

  • PrintDisasterRecovery - Excepción manejo
  • PrintQueuer - Hace que sea una llamada asincrónica

Estas grietas ambos heredar de PrintDecorator, así que si alguien se asoma debajo de las mantas que puedan ver que esta pasando.

11

Tome un ejemplo del Marco IO de la API de Java. Utiliza el patrón de decorador de forma exhaustiva, pero los nombres de las clases no reflejan esto. Por ejemplo, un BufferedReader puede decorar un FileReader pero llevan el nombre de su función - Readers.

Agregar el decorador al nombre provocaría más problemas si también incorpora otros patrones que involucren las mismas clases que con frecuencia. Puede terminar con una clase llamada MyDecoratorStrategyComponent.

+6

... o incluso un AbstractSingletonProxyFactoryBean - http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/aop/framework/AbstractSingletonProxyFactoryBean.html – blank

Cuestiones relacionadas