Softwaredesign: Beispiel: Tiefes Kopieren eines binären Baumes |
abstract
public
class BinTree {
// ...
abstract
public
BinTree copy();
}
|
public
class EmptyTree extends BinTree {
// Singleton Erzeugungsmuster
// da keine Daten in der Klasse sind
// gibt es nur einen einzigen Wert von dieser Klasse
// --> Fliegengewicht
public
static
BinTree empty = new EmptyTree();
private
EmptyTree() {}
// ...
public
BinTree copy() {
return
this;
}
}
|
public
class Node extends BinTree {
protected
OrderedObject info;
protected
BinTree left;
protected
BinTree right;
public
Node(OrderedObject info) {
this.info = info;
this.left = EmptyTree.empty;
this.right = EmptyTree.empty;
}
// ...
public
BinTree copy() {
Node res = new Node(info); // <--- ???
res.left = left.copy();
res.right = right.copy();
return res;
}
}
|
Letzte Änderung: 13.04.2012 | © Prof. Dr. Uwe Schmidt |