Berapa Jumlah Prinsip Pola Desain?

Pada awalnya, hanya ada 5 prinsip desain yang disarankan, yaitu SOLID:

  • 单一职责原则 (Single Responsibility Principle, SRP):Satu kelas seharusnya memiliki satu alasan perubahan, yaitu satu kelas seharusnya memiliki satu tanggung jawab.
  • 开闭原则 (Open/Closed Principle, OCP):Entitas perangkat lunak (kelas, modul, fungsi, dll.) harus terbuka untuk ekspansi dan tertutup untuk modifikasi,artinya perubahan harus dilakukan melalui ekstensi,bukan dengan memodifikasi kode yang sudah ada.
  • 里氏替换原则 (Liskov Substitution Principle, LSP):Subtipe harus mampu menggantikan supertype-nya. Artinya,subclass harus dapat menggantikan superclass tanpa mengubah kebenaran program.
  • 接口隔离原则 (Interface Segregation Principle, ISP):Klien tidak seharusnya dipaksa untuk bergantung pada antarmuka yang tidak mereka gunakan. Antarmuka yang besar harus dipisahkan menjadi antarmuka yang lebih kecil dan lebih spesifik,sehingga klien hanya perlu tahu metode yang mereka gunakan.
  • 依赖倒置原则 (Dependency Inversion Principle, DIP):Modul tingkat tinggi tidak seharusnya bergantung pada modul tingkat rendah;keduanya seharusnya bergantung pada abstraksi. Abstraksi tidak seharusnya bergantung pada detail implementasi;detail implementasi seharusnya bergantung pada abstraksi.

Kemudian,dua aturan lagi ditambahkan. Aturan tambahan ini relatif lebih spesifik dan lebih instruksional. Melalui penjelasan prinsip,kita dapat melihat bahwa SOLID mendeskripsikan bagaimana cara melakukan sesuatu,sedangkan aturan tambahan mendeskripsikan prioritas/gaya terbaik untuk melakukan sesuatu.

  • 合成/聚合复用原则 (Composition/Aggregation Reuse Principle, CARP):Harus lebih mengutamakan komposisi objek (composition) dan agregasi,daripada pewarisan untuk mencapai pembelajaran kode.
  • 迪米特法则 (Law of Demeter, LoD):Sebuah objek seharusnya memiliki pengetahuan paling sedikit tentang objek lain,artinya sebuah objek seharusnya mengetahui struktur internal dan detail implementasi objek lain sesedikit mungkin.

Selain prinsip desain yang disebutkan di atas,masih ada beberapa prinsip desain lain. Meskipun tidak sedemikian dikenal seperti prinsip di atas,prinsip-prinsip ini tetap memberikan panduan penting untuk perancangan dan arsitektur perangkat lunak.

Aturan yang diajukan kemudian terasa seperti menambah sesuatu yang tidak perlu. Pada dasarnya,saya menganggapnya tidak kontra-intuitif,sehingga tidak perlu dipikirkan secara mendalam.

  • 最少知识原则 (Principle of Least Knowledge, PoLK):Juga dikenal sebagai ekstensi Hukum Terkecil (Law of Demeter),prinsip ini mengusulkan bahwa sebuah objek seharusnya mengetahui informasi tentang objek lain sesedikit mungkin. Prinsip ini dapat ditelusuri hingga Hukum Komunikasi Terkecil (Law of Least Communication) yang diajukan oleh Patricia Lago dan Koos Visser pada tahun 1987.
  • 稳定依赖原则 (Stable Dependencies Principle, SDP):Prinsip ini menyatakan bahwa perancangan perangkat lunak seharusnya memastikan bahwa komponen yang stabil tidak bergantung pada komponen yang tidak stabil. Dengan kata lain,komponen dengan stabilitas tinggi seharusnya lebih sedikit bergantung pada komponen dengan stabilitas lebih rendah. Idea ini berasal dari penelitian mendalam tentang hubungan antar komponen dalam sistem perangkat lunak.
  • 稳定抽象原则 (Stable Abstraction Principle, SAP):Sejalan dengan Prinsip Dependensi Stabil,prinsip ini mengarahkan penyesuaian antara abstraksi dan stabilitas. Abstraksi seharusnya cocok dengan stabilitas;komponen yang stabil seharusnya abstrak,dan komponen yang tidak stabil seharusnya konkret. Prinsip ini membantu memastikan stabilitas dan fleksibilitas sistem perangkat lunak.