Tasarım kalıpları, ortak programlama problemlerine yönelik kanıtlanmış çözümlerdir. C++'da kod organizasyonunu, yeniden kullanılabilirliği ve kullanılabilirliği geliştirmeye yardımcı oluyorlar. Bu makale, popüler tasarım kalıplarının pratik örneklerini araştırıyor ve gerçek dünya problemlerini çözmeye nasıl uygulanabilirler.

Singleton Desen

Singleton modeli, bir sınıfın sadece bir örneği olduğunu ve ona küresel bir erişim noktası sağlar. konfigürasyon ayarları veya log sistemleri gibi paylaşılan kaynakları yönetmek için faydalıdır.

Örnek uygulama:

[FONT:0)Komşu: [Dönem: 1]

"Cin sınıfı Logger { özel: statik Logger* örneğin; Logger() {} halk: statik Logger* getInstance() {0} {=Yeni Logger(); } geri dönüş örneği; } boş giriş (konst std:string& mesaj) { // Log message: Logger* Logger* Logger:::instance= nullptr; "

Fabrika Yöntemi Desen

Fabrika Yöntemi modeli nesneleri oluşturmak için bir arayüz tanımlar, ancak alt sınıfların oluşturulacak nesneler türünü değiştirmelerini sağlar. Bu, gevşek darbe ve ölçeklenebilirliği teşvik eder.

Örnek senaryo: farklı doküman türlerini oluşturmak.

[FONT:0)Komşu: [Dönem: 1]

"Cin sınıf Belgesi { kamu: sanal boşluk oluşturma() = 0; sanal -Document() {}> Sınıf PDFDocument: public Document { public: blank create() override { // Create PDF document }>| class WordDocument: public Document {|||||||||||||||||||||||||||||||||||||||||||||||||||||||form|||||||||form| ptr oluşturma ptr|form p ptr oluşturma p p ptr = ptr|form ptr|form p ptr|form p p p ptr|form p p p p p ptr oluşturma ptr|form p p p ptr|form p p ptr|form >< ptr|>

Gözlemleyici Desenli Desen

Gözlemleyici desen nesneler arasında bir bağımlılık yaratır, böylece bir nesne durumu değiştiğinde, tüm bağımlıları otomatik olarak bildirilir. Olay işleme sistemlerinin uygulanması için faydalıdır.

Örnek: Birden çok gözlemcinin bir değişikliğe yanıt verdiği basit bir olay sistemi.

[FONT:0)Komşu: [Dönem: 1]

"Cpp # dahil # sınıf Gözlemci { halka: sanal boşluk güncelleme() = 0; sanal -Observer() {} }; sınıf konusu { özel: std:vector gözlemciler; kamu: obt(Observer* gözlemci) { gözlemciler.push back(observer);