in

c # – El patrón de decorador oculta las interfaces de Decoratee

apple touch icon@2
public interface IRender
{
  void Render();
}

public interface IUpdate
{
  void Update(float deltaTime);
}

Tengo clases que implementan IRender, algunas de estas también implementan IUpdate. Al usar el patrón de decorador, puedo extender su método Render.

public abstract class Decorator: IRender
{
  protected IRender decoratee;

  public Decorator(IRender decoratee)
  {
    this.decoratee = decoratee;
  }

  public virtual Render()
  {
    decoratee.Render();
    // add custom rendering code here.
  }
}

La belleza de esto es que puedo crear un comportamiento de renderizado personalizado envolviendo un objeto en múltiples decoradores como una muñeca babushka.

Mi problema es el hecho de que la interfaz IUpdate, así como cualquier otro implemento de decoratee, ahora estará oculto por el decorador. Tengo varios sistemas que aceptan una lista de objetos y los operan de acuerdo con la interfaz que implementan. La clase decorada solo expondrá la interfaz de IRender.

¿Cuál es la forma más limpia de solucionar este problema?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

60 109370 1581658197

¿Cómo obtener el tiempo de actividad del sistema con PowerShell?

Xwu5xMLEnyfWgqjpWaNGzX 1200 80

Cyberpunk 2077 Happy Together: Cómo resolver la misión con Barry, el nicho y la policía