Template Method Pattern (Schablonenmethode) wo in Klassesnbibliotheken?



  • Hi,

    ich muss ein Ref über die Schablonenmethode halten. Ich habe gelesen, dass von der Schablonenmethode oft in Klassenbibs Gebrauch gemacht wird.
    Ich habe aber bisher noch keine Methode aus einer Bib gefunden, die einer typischen Schablonenmethode entspricht.
    Fällt jemanden eine Methode aus einer Standard-Bib (wie z.B. der Standard-Java-API) ein, die einer typischen Schablonenmethode entspricht - also das nur Skelett eines Algos definiert?

    Vielen lieben Dank schon mal.



  • edit:
    sry, hier stand mist. thx an Optimizer



  • Das ist nicht das Template Method Pattern.
    Template Method besteht darin, einen Algorithmus aus mehreren Komponenten zusammenzubauen und einzelne Teile zu redefinieren zu können. Ohne den ganzen Algorithmus neu schreiben zu müssen, wenn man einen leicht modifizierten Algorithmus will.



  • @fit: Ich mag mich täuschen, aber die ganzen Impl-Dinger aus dem Java API könnten so etwas darstellen. Komm aber dann nicht zu mir, wenn du ne 5 hast. 😉



  • Optimizer schrieb:

    Das ist nicht das Template Method Pattern.
    Template Method besteht darin, einen Algorithmus aus mehreren Komponenten zusammenzubauen und einzelne Teile zu redefinieren zu können. Ohne den ganzen Algorithmus neu schreiben zu müssen, wenn man einen leicht modifizierten Algorithmus will.

    ist boost::spirit nicht danach aufgebaut?



  • Ist das sowas wie Policies??



  • fit schrieb:

    Hi,

    ich muss ein Ref über die Schablonenmethode halten. Ich habe gelesen, dass von der Schablonenmethode oft in Klassenbibs Gebrauch gemacht wird.
    Ich habe aber bisher noch keine Methode aus einer Bib gefunden, die einer typischen Schablonenmethode entspricht.
    Fällt jemanden eine Methode aus einer Standard-Bib (wie z.B. der Standard-Java-API) ein, die einer typischen Schablonenmethode entspricht - also das nur Skelett eines Algos definiert?

    Vielen lieben Dank schon mal.

    vielleicht paint in Component?
    write in OuputStream?
    such am besten nach abstrakten klassen von java.

    Gruß mathik



  • Ne, das sind ja abstrakte Methoden, also nur die Definition einer Schnittstelle.
    Evtl. könnten diese Impl-Dinger so etwas sein und vielleicht findest auch in AbstractSequentialList was, was ja auch so ne Skelett-Implementierung für abgeleitete Klasse wie ArrayList ist.



  • Scheint wohl hier niemand genau zu wissen was das ist.

    Irgendwie traurig. 🤡 🤡 🤡 🤡



  • Optimizer schrieb:

    Ne, das sind ja abstrakte Methoden, also nur die Definition einer Schnittstelle.
    Evtl. könnten diese Impl-Dinger so etwas sein und vielleicht findest auch in AbstractSequentialList was, was ja auch so ne Skelett-Implementierung für abgeleitete Klasse wie ArrayList ist.

    java doku zu OutputStream schrieb:

    The write method of OutputStream calls the write method of one argument on each of the bytes to be written out.

    die methode void write(int b) ist abstract. die anderen write methoden benutzen diese aber. D.h. hier ist ein Template-Method-Pattern, auch wenn es ziemlich simpel in dem fall ist.



  • Stimmt, das könnte man tatsächlich so sehen. Mir ist zugegebenermaßen noch nie aufgefallen, dass write(byte[]) und write(byte[], int, int) gar nicht abstract sind, wahrscheinlich auch, weil viele Klassen die wieder overriden. Aber prinzipiell müsste man dies eigentlich nie tun... interessant.



  • Sind meiner Meinung nach wenn du in z.b. einer klasse Funktionen von Unterklassen verwendest die du dann nachträglich überschreiben kannst und der die eigentliche Funktion sprich der Algo bleibt aber von der Struktur her gleich. Ruft was weiß ich uclass::print() auf aber der code von print kann man hinterher überschreiben. Falls das das ned hilft musst irgendwo suchen, ich hab leider keine Zeit; aber vielleicht kannst ja was mit dem (^) anfangen!

    Viel glück noch Manuelh87 :xmas1:


Anmelden zum Antworten