如何在C#和java中实现这种可插入机制?
假设我有三个对象A,B,C.如何在C#和java中实现这种可插入机制?,c#,java,c++,externalinterface,loose-coupling,C#,Java,C++,Externalinterface,Loose Coupling,假设我有三个对象A,B,C. B是以下接口的实现: interface D { event EventHandler<OrderEventArgs> OrderCreated; event EventHandler<OrderEventArgs> OrderShipped; } A是宿主类,将调用B的函数来引发指定的事件。 我希望在C中我可以监听接口B或类C,每当B中的事件被触发时,C可以得到通知,然后C可以对事件做出反应 我正在考虑如何在C#和Java
B是以下接口的实现:
interface D
{
event EventHandler<OrderEventArgs> OrderCreated;
event EventHandler<OrderEventArgs> OrderShipped;
}
A是宿主类,将调用B的函数来引发指定的事件。
我希望在C中我可以监听接口B或类C,每当B中的事件被触发时,C可以得到通知,然后C可以对事件做出反应
我正在考虑如何在C#和Java中实现这种机制。任何帮助或提示都将不胜感激 因此您将有一个名为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
}
所以你会有一个名为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
}
实现此模式:实现此模式:谢谢,您有C#的解决方案吗?C#中是否存在类似的机制?如果我不使用beans.PropertyChangeSupport,还有其他java解决方案吗?在java中,你可以手动编写事件侦听器通知逻辑(这是PropertyChangeSupport对象的全部功能),但你为什么要这么做呢?这在前面的评论中被忽略了:我猜会有一个C#等价于java.beans对象(我不是一个C#编码器),如果不是的话,实现它是一件微不足道的事情。。。您需要一个方法来添加()和删除()侦听器,以及激发()和事件。谢谢,您有C#中的解决方案吗?C#中是否存在类似的机制?如果我不使用beans.PropertyChangeSupport,还有其他java解决方案吗?在java中,你可以手动编写事件侦听器通知逻辑(这是PropertyChangeSupport对象的全部功能),但你为什么要这么做呢?这在前面的评论中被忽略了:我猜会有一个C#等价于java.beans对象(我不是一个C#编码器),如果不是的话,实现它是一件微不足道的事情。。。您需要一个方法来添加()和删除()侦听器,以及激发()和事件。