【发布时间】:2010-07-06 06:17:10
【问题描述】:
我有一个 A 类,它有一系列处理程序,例如公共无效句柄Ev1(),公共无效句柄Ev2()等。 当事件发生时,B 类中的另一个线程从 A 类调用对应的处理程序(B 类具有对 A 类的一种观察者可观察的引用)。 在A类的对应方法中对事件的处理中,A最终将一个事件引发到一个eventListener(C类不是我创建的)。 我的问题如下:是否有一种模式可以用来从充当 eventListeners 的类中“隐藏”类 A 的处理方法(不是由我实现的),并且仅对类 B(其中我执行)?
我正在编辑我原来的问题。 我的 Csystem 类有很多方法和我正在谈论的处理程序
public class Csystem()
{
private AListener listener;//implements an event listener (the class C in my question)
//some methods here
public void handleEventIncoming(Event e){
//Do some logic here
listener.raiseEvent(e);
}
public void handleEventOutgoing(Event e); etc
}
CSystem 是一个类,它本质上是其他组件的其他开发人员对我的代码的接口。其他一些开发人员将编写他自己版本的 AListener 类(A 类)并在他的代码中使用 Csystem。每当某处发生事件(例如,网络中的消息到达)时,B 类都会将该事件传递给 CSystem 的事件处理程序
public class Dispatch{
//This is class B
private CSystem s;
private void event_occured(Event e)
{
s.handleEventIncoming(e);
}
}
} 我的问题是 Dispatch 类(由我实现)和 AListener 类都“看到”了 CSystem 的相同接口。我希望实现 AListener 的开发人员能够看到 CSystem 的不同视图并“看到”并且能够仅使用公共方法。我认为查看某人实际上无法使用的方法并不是一个好主意(处理程序对于仅由调度程序使用是有意义的)是否有实现此目的的模式?
谢谢!
【问题讨论】:
标签: java design-patterns oop