Pola desain yang terbukti sebagai solusi untuk masalah pemrograman umum. Dalam C++, mereka membantu meningkatkan organisasi kode, reusabilitas, dan keabsahan. Artikel ini mengeksplorasi contoh-contoh praktis pola desain populer dan bagaimana mereka dapat diterapkan untuk memecahkan masalah dunia nyata.

Corak Singleton Beton

Pola Singleton memastikan bahwa sebuah kelas hanya memiliki satu contoh dan menyediakan titik akses global untuk itu. Ini berguna untuk mengelola sumber daya bersama seperti pengaturan konfigurasi atau sistem pencatatan.

Contoh implementasi sebolan:

Code:]

Logger kelas ``cpp { private: static Logger* instance; Logger () {} publik: static Logger* getInstance() { jika (!instance) { instance = new Logger(); } return instance; } noctic log(const std::string& pesan) { // Log message } }; Logger* Logger:::instance = nullptr; ```

Pola Metode Pabrik Pabrik Pabrik Pabrik Pabrik

Pola Metode Pabrik mendefinisikan antarmuka untuk menciptakan objek tetapi memungkinkan subkelas untuk mengubah jenis objek yang akan diciptakan.

Contoh senario Contoh: menciptakan berbagai jenis dokumen.

Code:]

Dokumen kelas GUNA ``cpp { publik: virtual void create() = 0; virtual ~Document ( {} }; kelas PDFDocument : public Document { publ: void) override {/// Create PDFDocument [public: void) override { // Create public Document () override { // Create PDFcument public) override {// Create PDF (public); class DocumentFactoryFactory (public: virtual std::: culture ptr) retur: public criting: public cirment: commands (); public cir: public cirector: public public command

Corak Beragam Beragam Beragam

Pola Observer menetapkan ketergantungan satu-ke-banyak antar objek sehingga ketika satu objek berubah keadaan, semua ketergantungannya dimaklumkan secara otomatis. Ini berguna untuk melaksanakan sistem penanganan peristiwa.

Contoh: sistem peristiwa sederhana di mana beberapa pengamat menanggapi perubahan.

Code:]

AWA``cpp #include #include class Observer { public: virtual void update() = 0; virtual ~ observer() {} }; class Subject { privat: std::: vector pengamat; public: void atlist( observender* pengamat) { pengamat.push back(observer); } void nollance() { untuk (auto* pengamat : pengamat: pengamat) { obser-> update() } } ; ````````