Corak Reka Bentuk Struktural: Facade, Flyweight, dan Proxy

Corak reka bentuk struktural membantu anda menyusun kelas dan objek.

Hari ini kita akan membincangkan tiga corak terakhir untuk melengkapkan kit alatan anda.

1. Corak Facade Facade memudahkan sistem yang kompleks. Ia menyediakan satu antara muka yang ringkas untuk sekumpulan kelas yang berselirat.

Bayangkan sebuah panggung wayang. Untuk menonton filem, anda perlu malapkan lampu, mulakan projektor, dan buka langsir. Daripada memanggil lima sistem yang berbeza, anda hanya memanggil satu kaedah: theater.watch_movie().

Gunakan apabila:

  • Anda ingin memudahkan subsistem yang kompleks.
  • Anda memerlukan satu titik masuk tunggal untuk API yang besar.
  • Anda ingin memutuskan kaitan (decouple) pelanggan daripada logik dalaman.

2. Corak Flyweight Flyweight menjimatkan memori. Ia berfungsi apabila anda mempunyai beribu-ribu objek yang serupa.

Daripada menyimpan setiap butiran dalam setiap objek, anda membahagikan data tersebut. Anda menyimpan data yang dikongsi dan tidak berubah (keadaan intrinsik) di satu tempat. Anda menyimpan data yang unik (keadaan ekstrinsik) secara berasingan.

Gunakan apabila:

  • Penggunaan memori menjadi masalah sebenar.
  • Anda menguruskan berjuta-juta objek yang serupa, seperti aksara dalam penyunting teks atau zarah dalam permainan video.
  • Anda ingin menggunakan pengumpulan objek (object pooling) untuk meningkatkan prestasi.

3. Corak Proxy Proxy bertindak sebagai pengganti bagi objek lain. Ia berada di antara pelanggan dan objek sebenar untuk mengawal akses.

Proxy boleh:

  • Pemuatan malas (Lazy load): Memuatkan imej yang berat hanya apabila pengguna menekannya.
  • Mengawal akses: Menyemak jika pengguna mempunyai kebenaran untuk memadam pangkalan data.
  • Log aktiviti: Menjejaki siapa yang menggunakan perkhidmatan tertentu.
  • Cache keputusan: Mengembalikan data yang disimpan daripada menjalankan logik yang berat.

Gunakan apabila:

  • Anda perlu melambatkan operasi yang berat.
  • Anda mesti melindungi perkhidmatan yang sensitif.
  • Anda ingin menambah log atau keselamatan tanpa mengubah kelas asal.

Jadual Rumusan

Adapter: Menjadikan sistem yang tidak serasi berfungsi bersama. • Bridge: Memutuskan kaitan antara abstraksi dan pelaksanaan. • Composite: Membina struktur pokok. • Decorator: Menambah tingkah laku tanpa mengubah kelas. • Facade: Memudahkan subsistem yang kompleks. • Flyweight: Berkongsi data untuk menjimatkan memori. • Proxy: Mengawal akses kepada objek.

Peraturan Emas: Gunakan corak ini untuk menjadikan kod mudah diselenggara. Jangan gunakannya hanya untuk menunjuk-nunjuk.

Seterusnya, kita akan memulakan siri Corak Reka Bentuk Tingkah Laku (Behavioral Design Patterns).

Source: https://dev.to/mahdi0shamlou/mahdi-shamlou-structural-design-patterns-2026-facade-flyweight-proxy-production-examples-g5l