Pregunta

Tengo observadores de eventos, que todos observan el mismo evento, así que tengo una superclase abstracta que observa ese evento y luego el / implementa la funcionalidad específica de las subclases de las anulaciones.

El problema con esto es que no observa el evento menos que poner el método de evento de observador en la subclase (que contradice el objetivo de mi diseño).

yo, ciertamente, puede hacerlo de esta manera, pero quiero escribir tan poco código como sea posible.

En caso de que funciona de esta manera (estoy haciendo algo más mal)?

Si no se supone que funciona de esta manera, entonces puede escribir un productor para una cosa y luego un interceptor. Pensé que mi primer acercamiento era más simple y más probabilidades de ser utilizado correctamente por otros desarrolladores.

código de ejemplo:

SuperClass:

public abstract class AbstractFileWriter
{
  public void onReady(@Observes ReadyEvent readyEvent)
  {
    try
    {
      handleReady(readyEvent, ...);
    }
  }

  protected abstract handleReady(ReadyEvent readyEvent, otherParameters go here);
}

subclase

public class XmlWriter extends AbstractFileWriter
{
   protected handleReady( ... )
   { ... }
}

Si escribo de esta manera, se handleReady nunca invocó (y tampoco lo es onReady para el caso); sin embargo, si lo escribo con el método de observador dentro de la subclase, funciona como se esperaba. Quiero escribir de esta manera ya que hay mucho menos código que tendría que escribir y un poco menos de abstracción que debería hacer que sea más fácil de entender.

Walter

¿Fue útil?

Solución 2

Me escribió un decorador como he mencionado anteriormente. Esto hace esencialmente lo mismo, acaba de escribir un poco diferente.

Walter

Otros consejos

Cualquiera de declarar el método relevante en la superclase a ser abstracta o tiene que llamar a un método abstracto "detalle" que cada subclase implementos.

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