Schablonenmethode

Klassendiagramm einer Schablonenmethoden-Implementierung

Die Schablonenmethode (englisch template method pattern) ist ein in der Softwareentwicklung eingesetztes Entwurfsmuster, mit dem Teilschritte eines Algorithmus variabel gehalten werden können.[1] Es gehört zur Kategorie der Verhaltensmuster (engl. behavioral patterns). Das Muster ist eines der sogenannten Viererbanden-Entwurfsmuster (GoF).

Funktionsweise

Beim Schablonenmethoden-Entwurfsmuster wird in einer abstrakten Klasse das Skelett eines Algorithmus definiert. Die konkrete Ausformung der einzelnen Schritte wird an Unterklassen delegiert. Dadurch besteht die Möglichkeit, einzelne Schritte des Algorithmus zu verändern oder zu überschreiben, ohne dass die zu Grunde liegende Struktur des Algorithmus modifiziert werden muss. Die Schablonenmethode (engl. template method) ruft abstrakte Methoden auf, die erst in den Unterklassen definiert werden. Diese Methoden werden auch als Einschubmethoden bezeichnet.

Zusätzlich können in der Schablonenmethode an bestimmten Stellen Hook-Operationen aufgerufen werden, deren Standardimplementierung in der abstrakten Klasse nichts tut. Auf diese Weise kann man an vordefinierten Stellen im Algorithmus zusätzliche Funktionalität einfügen.

Als Variante können die Einschubmethoden oder Hook-Operationen auch eine Standard-Implementierung besitzen, die von den konkreten Klassen genutzt werden können, aber nicht müssen.

Ein Beispiel dazu findet sich in der I/O-Datenstrom-Programmierschnittstelle von Java. Dort implementiert ein OutputStream eine konkrete Methode zum Schreiben eines Byte-Arrays. Diese Methode benutzt eine Methode zum Schreiben eines einzelnen Bytes, um das ganze Array nach und nach zu schreiben. Die Methode für das einzelne Byte ist jedoch noch abstrakt, da ein OutputStream selbst noch nicht spezifisch ist. Klassen wie FileOutputStream können diese Methode implementieren. Sie erben dann eine bereits implementierte Methode zum Schreiben eines Byte-Arrays.

Policy-Based Design

Policy-Based Design ist ein allgemeineres Entwurfsmuster, bei dem nicht nur Algorithmen, sondern ganze Klassen schablonenhaft aufgebaut sind. Sowohl Methoden bzw. Algorithmen als auch gespeicherte Datensätze, Basisklassen und Schnittstellen sind dann innerhalb der Skelettstruktur austauschbar. Dies erfordert in aller Regel Templatemetaprogrammierung, wie es sie in C++ und D gibt, ist jedoch theoretisch auch über Konstrukte einiger Skriptsprachen (eval, Makros, Autoloading von Quellcode o. Ä.), allerdings kaum in Sprachen wie C# oder Java realisierbar.

Beispiel

Diese C++14 Implementierung basiert auf der vor C++98 Implementierung im Buch Entwurfsmuster.

#include <iostream>
#include <memory>

class View { // AbstraktKlasse
public:
  // definiert abstrakte primitive Operationen, die von konkreten Unterklassen definiert werden, um die Schritte eines Algorithmus zu implementieren.
  virtual void doDisplay() {}
  // implementiert eine Schablonenmethode zur Definition des Skeletts eines Algorithmus. Die Schablonenmethode ruft sowohl primitive Operationen als auch in AbstraktKlasse oder anderen Klassen definierte Operationen auf.
  void display() {
    setFocus();
    doDisplay();
    resetFocus();
  }
  virtual ~View() = default;
private:
  void setFocus() {
    std::cout << "View::setFocus\n";
  }
  void resetFocus() {
    std::cout << "View::resetFocus\n";
  }
};

class MyView : public View { // KonkreteKlasse
  // implementiert die primitiven Operationen, welche die unterklassenspezifischen Schritte des Algorithmus ausführen.
  void doDisplay() override {
    // stelle den Inhalt der Anzeige dar
    std::cout << "MyView::doDisplay\n";
  }
};

int main() {
  // Die Smart pointers verhindern Memory leaks.
  std::unique_ptr<View> myview = std::make_unique<MyView>();
  myview->display();
}

Die Programmausgabe ist:

View::setFocus
MyView::doDisplay
View::resetFocus

Einzelnachweise

  1. Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: Entwurfsmuster. 5. Auflage. Addison-Wesley, 1996, ISBN 3-8273-1862-9, S. 366.

Read other articles:

Ada usul agar Dokter keluarga digabungkan ke artikel ini. (Diskusikan) Diusulkan sejak Oktober 2021. Artikel ini memerlukan pemutakhiran informasi. Harap perbarui artikel dengan menambahkan informasi terbaru yang tersedia. Dokter sedang memeriksa sinar x pasien Dokter umum adalah dokter yang diperkenankan untuk melakukan praktik medis tanpa harus spesifik memiliki spesialisasi tertentu, hal ini memungkinkannya untuk memeriksa masalah-masalah kesehatan pasien secara umum untuk segala usia.[...

 

Artikel ini membutuhkan rujukan tambahan agar kualitasnya dapat dipastikan. Mohon bantu kami mengembangkan artikel ini dengan cara menambahkan rujukan ke sumber tepercaya. Pernyataan tak bersumber bisa saja dipertentangkan dan dihapus.Cari sumber: Kementerian Wilayah Federal Malaysia – berita · surat kabar · buku · cendekiawan · JSTOR Kementerian Wilayah Federal MalaysiaKementerian Wilayah Persekutuan Diraja Malaysia (Melayu)(KWPDM)The Ministry of...

 

Carré de l'EstNegara asalPrancisSumber susuSapiDipasteurisasiYaTeksturLembutWaktu pematangan3-4 bulanSertifikasiTidak[1] Carré de l'Est adalah keju dari negara Prancis yang dibuat dengan menggunakan susu sapi yang dipasteurisasi.[1] Keju tersebut dimatangkan di gudang bawah tanah dan selama proses pematangan pada keju itu tumbuh lapisan kulit berwarna putih yang lembut.[1] Untuk menjadikan bagian kulit dari keju ini tajam dan berwarna oranye maka keju ini dicuci deng...

هذه المقالة تحتاج للمزيد من الوصلات للمقالات الأخرى للمساعدة في ترابط مقالات الموسوعة. فضلًا ساعد في تحسين هذه المقالة بإضافة وصلات إلى المقالات المتعلقة بها الموجودة في النص الحالي. (يوليو 2019) منتخب تايبيه الصينية لاتحاد الرغبي بلد الرياضة تايوان  تاريخ التأسيس 14 مارس ...

 

Народная музыка индейцев Игра на кене Направление народная музыка Истоки музыкальные и культурные традиции индейских народов Годы расцвета у разных народов: от XIV до XVI в. Производные Этническая музыка Чаранго. Задняя дека традиционно изготавливается из панциря бронено...

 

Study of the distribution of species and ecosystems in geographic space and through geological time Frontispiece to Alfred Russel Wallace's book The Geographical Distribution of Animals Part of a series onEvolutionary biologyDarwin's finches by John Gould Index Introduction Main Outline Glossary Evidence History Processes and outcomes Population genetics Variation Diversity Mutation Natural selection Adaptation Polymorphism Genetic drift Gene flow Speciation Adaptive radiation Co-operation Co...

Merdias AlmatsierLahir8 September 1944 (umur 79)Kotabumi, Lampung, (masa pendudukan Jepang)KebangsaanIndonesiaAlmamaterUniversitas IndonesiaPekerjaanDokterDikenal atas- Ketua Umum PB IDI - Dirut RSCM, Jakarta- Ketua Majelis Kehormatan Disiplin Kedokteran Indonesia pada Konsil Kedokteran Indonesia Merdias Almatsier (lahir 8 September 1944) adalah seorang dokter ahli saraf asal Indonesia. Dia pernah menjabat sebagai direktur utama Rumah Sakit Dr. Cipto Mangunkusumo, Jakarta[1] dan...

 

القانون الأساسي الفلسطينينظرة عامةالاختصاص دولة فلسطين اللغة العربية تاريخ سريان المفعول 18 مارس 2003 التاريخالموقعون  القائمة ... ياسر عرفات نبيل شعث رفيق النتشة حسن خريشة أحمد قريع روحي فتوح حنان عشراوي حكم بلعاوي الطيب عبد الرحيم مفيد عبد ربه ماهر المصري أحمد الديك صائ�...

 

Private school in Middlesex County, New Jersey, United States Rabbi Pesach Raymon YeshivaAddress2 Harrison StreetEdison, Middlesex County, New Jersey 08817United StatesCoordinates40°30′27″N 74°25′45″W / 40.507604°N 74.429195°W / 40.507604; -74.429195InformationTypePrivateReligious affiliation(s)Orthodox JudaismNCES School ID00869386[2]PrincipalRabbi Michael RibaltFaculty24.1 FTEs[2]GradesPreK-8Enrollment229 (plus 53 in PreK, as of 2017–18)...

For the Indonesian regency, see Teluk Bintuni Regency. Bintuni BayTeluk Bintuni (Indonesian)Bintuni BayBintuni Bay as shown relative to Western New GuineaLocationNew GuineaCoordinates02°20′S 133°25′E / 2.333°S 133.417°E / -2.333; 133.417Primary outflowsBerau GulfBasin countries IndonesiaBintuni Bay Nature ReserveTeluk Bintuni Nature ReserveIUCN category Ia (strict nature reserve)[1]Area1,248.51 km2 (482.05 sq mi)Designation...

 

Pour les articles homonymes, voir Diorama (homonymie). Renards au muséum Senckenberg, Francfort-sur-le-Main. Le diorama (de panorama avec le préfixe dia- qui se substitue au préfixe pan-) est un dispositif de présentation par mise en situation ou mise en scène d'un modèle d'exposition (un personnage historique, fictif, un animal disparu ou encore vivant à l'ère du public…), le faisant apparaître dans son environnement habituel[1]. C'est un mode de reconstitution d'une scène (hist...

 

国民阵线Barisan NasionalNational Frontباريسن ناسيونلபாரிசான் நேசனல்国民阵线标志简称国阵,BN主席阿末扎希总秘书赞比里署理主席莫哈末哈山总财政希山慕丁副主席魏家祥维纳斯瓦兰佐瑟古律创始人阿都拉萨成立1973年1月1日 (1973-01-01)[1]设立1974年7月1日 (1974-07-01)前身 联盟总部 马来西亚  吉隆坡 50480 秋傑区敦依斯迈路太子世贸中心(英�...

Early-3rd-century Carthaginian Christian martyrs Perpetua redirects here. For other uses, see Perpetua (disambiguation). SaintsPerpetua and FelicityThe martyrdom of Perpetua, Felicitas, Revocatus, Saturninus and Saturus from the Menologion of Basil II (c. AD 1000)MartyrsBornc. 182Diedc. 203 (aged 20–21)Carthage, Roman province of AfricaVenerated inRoman Catholic ChurchEastern Orthodox Churches[1]Oriental Orthodox ChurchesAnglican CommunionLutheran Chu...

 

Municipality, Clock tower in Tabriz, IranSa'at Towerکاخ شهرداری تبریزSouth-western side of Saat TowerGeneral informationTypeMunicipalityClock towerLocationTabriz, IranCoordinates38°04′25″N 46°17′44″E / 38.07361°N 46.29556°E / 38.07361; 46.29556Completed1934Design and constructionArchitect(s)Avedis Ohanjanian Sa'at Tower also known as Tabriz Municipality Palace (Persian: کاخ شهرداری تبریز, also Romanized as Sā'at Tower) is buil...

 

Austrian daily newspaper Der StandardTypeDaily newspaperOwner(s)Oscar BronnerPublisherOscar BronnerEditorMartin KotynekFounded19 October 1988; 35 years ago (1988-10-19)Political alignmentSocial liberalismHeadquartersViennaCountryAustriaCirculation86,000 (2013)Websitewww.derstandard.atMedia of AustriaList of newspapers Der Standard (Austrian German: [deːɐ̯ ˈstandard]) is an Austrian daily newspaper published in Vienna.[1] It is considered a newspaper of re...

MV Sinar Kudus hijackingPart of Piracy in Somalia, Operation Ocean ShieldMV Sinar Kudus escorted by frigates KRI Abdul Halim Perdanakusuma and KRI Yos SudarsoDate16 March – 1 May 2011 (2011-03-16 – 2011-05-01)Location456 nmi (845 km) off the coast of SomaliaResult Indonesian victory Pirate group defeated Hostages rescuedBelligerents  Indonesia Armed Forces Indonesian Army Indonesian Navy Somali PiratesCommanders and leaders Col Achmad Taufiqoer...

 

تحتاج هذه المقالة إلى الاستشهاد بمصادر إضافية لتحسين وثوقيتها. فضلاً ساهم في تطوير هذه المقالة بإضافة استشهادات من مصادر موثوق بها. من الممكن التشكيك بالمعلومات غير المنسوبة إلى مصدر وإزالتها. (October 2009) تريمبلي أون فرانس  شعار الاسم الرسمي (بالفرنسية: Tremblay-en-France)‏    ...

 

You can help expand this article with text translated from the corresponding article in French. Click [show] for important translation instructions. Machine translation, like DeepL or Google Translate, is a useful starting point for translations, but translators must revise errors as necessary and confirm that the translation is accurate, rather than simply copy-pasting machine-translated text into the English Wikipedia. Do not translate text that appears unreliable or low-quality. If possibl...

Chemical compound TetryzolineClinical dataATC codeR01AA06 (WHO) S01GA02 (WHO)Identifiers IUPAC name (RS)-2-(1,2,3,4-tetrahydronaphthalen-1-yl)-4,5-dihydro-1H-imidazole CAS Number84-22-0PubChem CID5419ChemSpider5226 YUNIIS9U025Y077KEGGD08578 YChEBICHEBI:28674 YChEMBLChEMBL1266 YCompTox Dashboard (EPA)DTXSID1047861 ECHA InfoCard100.001.384 Chemical and physical dataFormulaC13H16N2Molar mass200.285 g·mol−13D model (JSmol)Interactive imageMelting point11...

 

Newmarket♦7 is always a stop in the 1885 Hoyle rulesOriginEnglandAlternative namesStops, BoodleTypeMatchingFamilyStops groupPlayersvariableSkillslow skill, high random chanceCards52 cardsDeckFrenchRelated gamesQueen Nazarene • Pope Joan Newmarket is an English card game of the matching type for any number of players. It is a domestic gambling game, involving more chance than skill, and emerged in the 1880s as an improvement of the older game of Pope Joan. It became known in A...