Designmönster är beprövade lösningar på vanliga programmeringsproblem. I C++ hjälper de till att förbättra kodorganisation, återanvändbarhet och underhållbarhet. Denna artikel utforskar praktiska exempel på populära designmönster och hur de kan tillämpas för att lösa verkliga problem.
Singleton mönster
Singleton-mönstret säkerställer att en klass endast har ett fall och ger en global åtkomstpunkt. Det är användbart för att hantera gemensamma resurser som konfigurationsinställningar eller loggsystem.
Exempel på genomförande:
]Kod:
ρcpp klass Logger { privat: statisk Logger* instans; Logger() { offentligt: statisk Logger* getInstance() { if (!instance) { instans = new Logger(); } retur instans; } tomrum log (const std::::string & meddelande) { / / / / Logger meddelande }; Logger * Logger: instance = nullptr; ẓ
Fabriksmetodmönster
Fabriksmetoden mönster definierar ett gränssnitt för att skapa objekt men tillåter underklasser att ändra typen av objekt som kommer att skapas. Det främjar lös koppling och skalbarhet.
Exempel på scenario: skapa olika typer av dokument.
]Kod:
★ överklagande { offentligt: virtuellt tomrum skapa() = 0; virtuellt ~ dokument() }; klass PDFDocument : offentligt dokument { offentligt: tomrum skapa() åsidosätta { / / / Skapa PDF-dokument } ; klass Word Document : Public Document { offentligt dokument { offentligt: void skapa() överkörning { / / / Skapa Word dokument } } ; klass DocumentFactory { offentligt: virtual std:
Observer Mönster
Observer-mönstret fastställer ett beroende mellan objekten en-till-många så att när ett objekt ändrar tillstånd, meddelas alla dess anhöriga automatiskt. Det är användbart för att genomföra händelsehanteringssystem.
Exempel: ett enkelt händelsesystem där flera observatörer reagerar på en förändring.
]Kod:
★ cpp #include #include klass Observer { offentligt: virtuell tomrumuppdatering() = 0; virtuell ~ Observer() }; klass Subject { privat: std:: vctor observatörer; offentligt: tomt bifoga (Observer * observatör) { observatörer.push back(observer); } tomrum meddela() för (auto * observatörer) { observat; } } {\