我有4个类,描述状态图。 Node
,Edge
,ComponentOfNode
和ComponentOfEdge
。
ComponentOfEdge
的 ComponentsOfNode
个化合物。 Node
可以有0..n外边缘。 Edge
只能有Nodes
。
Edge
应该能够提供ComponentOfNode
,但仅限Nodes
Edge
ComponentOfEdge
ComponentsOfNode
的形式。
用户可以更改Edges
。我需要将此更改传播到所有{{1}}。我该怎么办?我希望应该使用观察者模式。
你能用伪代码给我一个例子吗?
答案 0 :(得分:2)
你知道,在Java中,Observer
/ Observable
模式的最佳示例(以及在非Swing代码中使用的简单)是propertyChange[Event/Listener/Support]
三位一体。在官方Java tutorial中记录(不幸的是在Swing示例中,导致混淆)。
答案 1 :(得分:0)
观察者是一个非常简单的模式。您需要做的就是在观察类中实现一个方法,该方法由观察类在更改时调用。
在您的情况下,您可能有:
class Edge {
// class definition
public void nodeChanged(Node changed) {
// do stuff
}
}
class Node {
// class definition
protected void onChange() {
for (Edge e : myEdges) {
e.nodeChanged(this);
}
}
}
答案 2 :(得分:0)
你做一个接口或使用java的默认观察者接口。我建议你实现你的观察者。
interface INodeListener{
void update(Object obj);
}
节点侦听器应该实现此接口。在你的节点中你应该保持它的监听器。当改变Node make invoke listener方法时。
public void invokeListener() {
for(INodeListener listener:listeners)
listener.update(yourVariable);
}