Pregunta

Para cada producto hay asociados calculadoras de costos como:. Descuento, descuento por el comerciante, el comerciante bonificación, descuento mensual, etc. En el futuro, se añadiría más calculadoras de costos

Tenemos una clase de producto concreto y muchos decoradores para cada cálculo de costes. Todos los productos deben utilizar todas las calculadoras, debido a que las calculadoras deciden aplicar sus cálculos de las propiedades del producto como la identificación del comerciante de producto, identificador de categoría, color, etc.

Y, hay millones de productos en nuestro sistema que debe ser calculada. Por lo tanto, es mejor almacenar en caché el calculadoras decoradas. Porque, la decoración de cada entidad de producto en tiempo de ejecución sería caro. Pero esto es difícil con el patrón decorador. Parece como un olor a utilizar este modelo en nuestra situación.

¿Qué sugieres? ¿Hay que utilizar decoradores, estrategia o patrón de la cadena de responsabilidad? O sin patrón.

¿Fue útil?

Solución

  

Todos los productos deben utilizar toda la   calculadoras, debido a que las calculadoras   decidir la aplicación de sus cálculos   las propiedades del producto como producto   ID del vendedor, ID de categoría, color, etc.

Si es necesario tener todos los productos usan todos los decoradores, entonces usted no está realmente ganando ningún beneficio del patrón. ¿Esto significa que si se implementa un nuevo decorador, todas las entidades existentes deben actualizarse para utilizar ese nuevo decorador?

Decoradores deben aplicarse a los productos sólo cuando sea necesario, y sólo aquellos que son necesarios decoradores debe aplicarse.

Creo que se debe eliminar la decisión dentro de los decoradores; algo más debe decidir si se debe aplicar un decorador, en cuyo caso se envuelve el producto en los decoradores apropiados. De esta manera usted sabe que si un producto está envuelto en un decorador, decorador que está afectando (efectuar?) El producto.

Otros consejos

En un patrón de estrategia, la intención de los cambios de objeto.

Por lo tanto, creo que la estrategia sería una buena opción.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top