I have 4 classes, that describe state diagram. Node, Edge, ComponentOfNode and ComponentOfEdge.
ComponentOfEdge compounds from ComponentsOfNode. Node can have 0..n outgoing edges. Edge can have only 2 Nodes.
Edge should be able to offer ComponentOfNode, but only from Nodes that Edge has, in the form of ComponentOfEdge.
The user can change ComponentsOfNode. I need this change spreads to all Edges. How would I do it? I expect the observer pattern should be used.
Can you give me an exam开发者_高级运维ple in pseudo-code please?
You know, in Java, the best example of an Observer/Observable pattern (and the easies to use in non-Swing code) is the propertyChange[Event/Listener/Support] trinity. It is documented (unfortunately on a Swing example, leading to confusion) in the official Java tutorial.
Observer is a pretty simple pattern. All you need to do is implement a method in the observing class that is called by the observed class on a change.
In your case, you might have:
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);
}
}
}
hi make one interface or use java's default observer interface.I advice you to implement your observer.
interface INodeListener{
void update(Object obj);
}
Node Listeners should be implement this interface. in your node you should hold it's listener.When changed Node make invoke listener method.
public void invokeListener() {
for(INodeListener listener:listeners)
listener.update(yourVariable);
}
加载中,请稍侯......
精彩评论