hallo, ich bin grad dabei, mir ein kleines framework zu basteln. dabei will ich das template method entwurfsmuster nutzen. soll also ein whitebox framework werden. also das prinzip besteht ja darin, die einschubmethode der framework klasse zu überschreiben und somit spezieles verhalten einzufügen. das standardverhalten, wird in der framework klasse gekapselt und muss dann nicht mehr jedes mal aufs neue implementiert werden. ich hab also 3 klassen:
dann natürlich die klasse, die das spezielle verhalten implementiert:
und dann eine klasse, die alles startet:
als ergebnis sollte dann 1 2 hook 3 rauskommen. aber wie muss ich das denn nun anstellen, damit das klappt?
es muss ja in FrameWork auch die template() aufgerufen werden und wenn ich in HookTester jetzt sowas mache wie sc.hook(), dann wird ja nur hook ausgegeben? sicher hab ich da was nicht verstanden! jemand eine idee?
danke
Code:
public abstract class FrameWork { //abstract, damit man keine instanz bilden kann
public abstract void hook(); //wird dann mit speziellem verhalten überschrieben
public void template(){ //implementiert standardverhalten und ruft hook auf
System.out.println("1");
System.out.println("2");
hook();
System.out.println("3");
}
}
Code:
public class SpecificClass extends FrameWork{
public void hook(){ //überschreiben von hook aus FrameWork
System.out.println("hook");
}
}
Code:
public class HookTester {
public static void main(String[] args){
SpecificClass sc = new SpecificClass();
//und nun?
}
}
es muss ja in FrameWork auch die template() aufgerufen werden und wenn ich in HookTester jetzt sowas mache wie sc.hook(), dann wird ja nur hook ausgegeben? sicher hab ich da was nicht verstanden! jemand eine idee?
danke