如何在C#和java中实现这个可插拔机制?

时间:2010-09-10 00:40:52

标签: c# java c++ externalinterface loose-coupling

假设我有三个对象A,B,C B是以下接口的实现:

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

我会在B中添加两个函数,它们将引发界面中的事件。

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

A是托管类,将调用B的函数来引发指定的事件。 我希望在C中我可以听到接口B或C类,每当B中的事件被引发时,C就会得到通知,然后C就可以对事件做出反应。

我在考虑如何在C#和Java中实现这个机制 任何帮助或提示将非常感谢!

2 个答案:

答案 0 :(得分:1)

所以你有一个名为C的EventListener,一个名为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
}

答案 1 :(得分:0)