¿Pregunta sobre el patrón de decorador y la clase de decorador abstracto? [duplicar]

Esta pregunta ya tiene una respuesta aquí:

¿Por qué necesitamos el decorador en el patrón de diseño del decorador? 4 respuestas

Esta pregunta ya fue hechaaquí, pero en lugar de responder a la pregunta específica, en su lugar se dieron descripciones de cómo funciona el patrón decorador. Me gustaría preguntárselo nuevamente porque la respuesta no me es inmediatamente evidente simplemente leyendo cómo funciona el patrón decorador (he leído el artículo de wikipedia y la sección del libro Head First Design Patterns).

Básicamente, quiero saber por qué se debe crear una clase decoradora abstracta que implemente (o amplíe) alguna interfaz (o clase abstracta). ¿Por qué no pueden todas las nuevas "clases decoradas" simplemente implementar (o extender) el objeto abstracto base (en lugar de extender la clase de decorador abstracto)?

Para hacer esto más concreto, usaré el ejemplo del libro de patrones de diseño que trata con bebidas de café:

Hay una clase de componente abstracta llamadaBeverageTipos de bebidas simples comoHouseBlend simplemente extenderBeveragePara decorar bebidas, un resumen.CondimentDecorator Se crea la clase que se extiende.Beverage y tiene una instancia deBeverageDigamos que queremos agregar un condimento de "leche", una claseMilk se crea lo que se extiendeCondimentDecorator

Me gustaría entender por qué necesitamos elCondimentDecorator clase y porque la claseMilk no podría haber simplemente extendido elBeverage clase en sí y ha pasado una instancia deBeverage En su constructor.

Esperemos que esto quede claro ...si no Simplemente me gustaría saber¿Por qué es la clase decoradora abstracta necesaria para este patrón?? Gracias.

Edición: traté de implementar esto, omitiendo la clase decoradora abstracta, yparece para seguir trabajando. ¿Esta clase abstracta está presente en todas las descripciones de este patrón simplemente porque proporciona una interfaz estándar para todas las nuevas clases decoradas?

Respuestas a la pregunta(9)

Su respuesta a la pregunta