Как реализовать этот подключаемый механизм в C # и Java? - PullRequest
1 голос
/ 10 сентября 2010

Допустим, у меня есть три объекта A, B, C.
B - реализация следующего интерфейса:

interface D
{
    event EventHandler<OrderEventArgs> OrderCreated;
    event EventHandler<OrderEventArgs> OrderShipped;
}

Я бы добавил две функции в B, которые будут вызывать события в интерфейсе.

class B
{
  RaiseOrderCreated();
  RaiseOrderShipped();
}

A является классом хостинга и будет вызывать функции B для вызова указанных событий.Я надеюсь, что в CI можно прослушивать интерфейс B или класс C, всякий раз, когда возникают события в B, C может получать уведомления, тогда C может реагировать на события.

Я думаю о том, как реализовать этомеханизм в C # и Java.
Любая помощь или советы будут с благодарностью!

Ответы [ 2 ]

1 голос
/ 10 сентября 2010

Таким образом, у вас будет EventListener с именем C, некоторый объект с именем A, который имеет поле типа B, которое является детищем реализации D.

Обычно в Java вы проектируете D по-разному:

interface D {
   static final String ORDER_PROPERTY="ORDER";
   void setOrder(Order order);
   Order getOrder();
}

class B implements D {
   // delegate object to implement support for event listeners and event firing
   private java.beans.PropertyChangeSupport propertyChangeSupport = new java.beans.PropertyChangeSupport(this);
   private Order order = null; // field that holds current order
   @Override
   public void setOrder(Order order) {
      Order old = this.order;
      this.order = order;
      propertyChangeSupport.firePropertyChange(ORDER_PROPERTY, old, order);
   }
   // more B code here
}
0 голосов
/ 10 сентября 2010

Реализация этого шаблона: http://en.wikipedia.org/wiki/Observer_pattern

...