Softwaredesign: Beziehung: Schablonenmethode <--> Strategie |
abstract
class X {
abstract T1 f(...);
T2 g(...) {
... f(...) ...;
}
}
class Y extends X {
T1 f(...) {
... ;
}
}
X x1 = new Y(...);
... x1.g(...) ...
|
Über f wird mit Hilfe von Vererbung über X variiert.
|
|
Anzahl Klassen?
|
|
Zur Laufzeit: Anzahl Objekte?
|
class X {
Cmd c;
X(Cmd c1) { c = c1; }
T2 g(...) {
... c.f(...) ...;
}
}
abstract
class Cmd {
abstract T1 f(...);
}
class C1 extends Cmd {
T1 f(...) {
...;
}
}
X x1 = new X(new C1(),...);
... x1.g(...) ...
|
Über f wird mit Hilfe von Vererbung über Cmd und einem Parameter im Konstruktor von X variiert.
|
|
Anzahl Klassen?
|
|
Zur Laufzeit: Anzahl Objekte?
|
class X {
T2 g(Cmd c, ...) {
... c.f(...) ...;
}
}
abstract
class Cmd {
abstract T1 f(...);
}
class C1 extends Cmd {
T1 f(...) {
...;
}
}
X x1 = new X(...);
... x1.g(new C1(), ...) ...
|
Über f wird mit Hilfe von Vererbung über Cmd und einem zusätzlichen Parameter in g variiert.
|
|
Anzahl Klassen?
|
|
Zur Laufzeit: Anzahl Objekte?
|
|
Vorteile gegenüber Strategie?
|
|
Nachteile gegenüber Strategie?
|
|
Nachteile gegenüber Strategie?
|
Letzte Änderung: 20.06.2013 | © Prof. Dr. Uwe Schmidt |