• Home
  • Berita
  • SOLID Design Principle: Panduan Bangun Arsitektur Software

SOLID Design Principle: Panduan Bangun Arsitektur Software

Oleh Ita Sugiharti
SOLID Design Principle: Panduan Bangun Arsitektur Software

Halo DomaiNesians! Saat membangun aplikasi dengan pendekatan Object-Oriented Programming (OOP), kamu mungkin pernah menghadapi masalah seperti struktur kode yang kompleks, sulit di-maintenance, atau mudah rusak ketika ada perubahan kecil. 

Masalah ini cukup umum terjadi, terutama pada proyek berskala menengah hingga besar yang terus berkembang seiring waktu. Untuk membantu mengatasi tantangan tersebut, Robert C. Martin atau yang lebih dikenal dengan sebutan Uncle Bob memperkenalkan lima prinsip desain OOP yang kemudian disebut dengan SOLID Principles. Prinsip-prinsip desain ini dirancang untuk membantu developer menulis kode yang bersih, modular, dan mudah dikembangkan tanpa mengorbankan stabilitas sistem.

Di artikel kali ini, kita akan membahas elemen dalam prinsip desain SOLID secara lengkap dengan contoh implementasi yang praktis dan relevan, agar kamu bisa mengembangkan kode yang lebih robust dan scalable.

Apa Itu SOLID Design Principles?

SOLID adalah akronim atau singkatan dari lima prinsip desain utama dalam OOP yang bertujuan untuk meningkatkan kualitas arsitektur perangkat lunak. Dengan menerapkan prinsip desain SOLID ini, kamu bisa membuat sistem yang lebih fleksibel, mudah diuji, serta lebih siap untuk menghadapi perubahan di masa depan.

SOLID Design Principle: Panduan Bangun Arsitektur Software 1

Image Source: Medium – Solid Principle In C#

Berikut kelima prinsip yang dimaksud dalam SOLID Design Principle:

  1. S = Single Responsibility Principle (SRP)
  2. O = Open/Closed Principle (OCP)
  3. L = Liskov Substitution Principle (LSP)
  4. I = Interface Segregation Principle (ISP)
  5. D = Dependency Inversion Principle (DIP)

Kelima prinsip dalam SOLID Design Principle ini bukan sekadar teori, tapi bisa langsung diterapkan dalam pengembangan aplikasi sehari-hari, termasuk dengan PHP. 

Single Responsibility Principle (SRP)

Prinsip Single Responsibility Principle (SRP) menyatakan bahwa sebuah kelas hanya boleh memiliki satu alasan untuk berubah. Artinya, setiap kelas harus memiliki satu fungsi atau peran yang spesifik.

SOLID Design Principle: Panduan Bangun Arsitektur Software 2

Image Source: Medium – Single Responsibility Principle

Misalnya kamu punya aplikasi untuk menghitung luas beberapa bangun datar:

Kemudian ada kelas AreaCalculator untuk menjumlahkan luas semua bangun datar tersebut:

Kode di atas dianggap melanggar SRP karena AreaCalculator bertanggung jawab untuk menghitung dan juga mencetak hasil. Jika nanti format output berubah (misal ke JSON), kamu juga harus mengubah kelas ini.

  • Solusi Tahap 1: Pisahkan logika perhitungan ke masing-masing bangun datar.
Baca Juga:  Begini Cara Memilih Hosting untuk Aplikasi Android Buatanmu!

  • Solusi Tahap 2: Pisahkan logika output.

Sekarang, AreaCalculator hanya akan berperan untuk menghitung dan tidak peduli bagaimana hasilnya ditampilkan.

Open-Closed Principle (OCP)

Prinsip ini menyatakan bahwa kelas harus terbuka atau fleksibel untuk ekstensi tetapi tertutup untuk modifikasi. Kamu harus bisa menambahkan fungsionalitas baru tanpa mengubah kode yang sudah ada.

SOLID Design Principle: Panduan Bangun Arsitektur Software 3

Image Source: Medium – SOLID Principles Series — Part 2: Open/Closed Principle (OCP)

Dengan pendekatan sebelumnya, jika ingin menambahkan jenis bangun datar yang baru (misalnya segitiga), kamu cukup membuat kelas baru:

Kamu tidak perlu memodifikasi AreaCalculator karena semua kelas bangun datar sudah memiliki kontrak area(). Inilah contoh penerapan OCP yang baik.

Liskov Substitution Principle (LSP)

LSP menyatakan bahwa kelas turunan harus dapat menggantikan kelas induknya tanpa harus merusak fungsionalitas program.

SOLID Design Principle: Panduan Bangun Arsitektur Software 4

Image Source: Medium – The Liskov Substitution Principle in Python: A Guide to Cleaner Code

Misalnya kamu membuat kelas VolumeCalculator:

Baca Juga:  Mengenal Teknik Benchmark Untuk Bersaing dengan Kompetitor

Jika kamu memakai SumCalculatorOutputter dengan VolumeCalculator, maka pastikan output-nya tetap sesuai:

Jika fungsi sum() mengembalikan array, hal ini akan menimbulkan error pada HTML. Oleh karena itu, VolumeCalculator juga harus mengembalikan nilai numerik, bukan array. Ketentuan ini sejalan dengan prinsip LSP.

Interface Segregation Principle (ISP)

Prinsip ini menyatakan bahwa sebuah kelas tidak boleh dipaksa untuk mengimplementasikan interface yang tidak relevan atau tidak digunakannya.

SOLID Design Principle: Panduan Bangun Arsitektur Software 5

Image Source: Medium – Interface Segregation Principle (ISP)

Contoh yang kurang tepat:

Permasalahannya, Square tidak memiliki volume(). Jadi, solusinya lebih baik pisahkan interface sesuai kebutuhan:

Implementasi yang benar:

Dengan ISP, setiap kelas hanya bergantung pada kontrak (interface) yang benar-benar relevan dengan fungsinya.

Dependency Inversion Principle (DIP)

Prinsip DIP menyatakan bahwa modul tingkat tinggi tidak boleh bergantung langsung pada modul tingkat rendah, tetapi harus bergantung pada abstraksi.

SOLID Design Principle: Panduan Bangun Arsitektur Software 6

Image Source: YouTube – SOLID – DIP – Dependency Inversion Principle | Practical example

Contoh yang kurang tepat:

Masalahnya, jika suatu hari kamu ingin mengganti database ke PostgreSQL, maka kamu juga harus mengubah kode di PasswordReminder. Solusinya, buat abstraksi menggunakan interface:

Sekarang dengan cara ini, maka PasswordReminder tidak lagi bergantung pada implementasi spesifik (MySQLConnection), tetapi pada abstraksi (DBConnectionInterface). Artinya, kamu bisa dengan mudah mengganti database ke PostgreSQL atau database lain tanpa harus mengubah logika di PasswordReminder.

Implementasi Prinsip Desain SOLID dalam Proyek Web PHP di Cloud VPS DomaiNesia

Agar kamu lebih memahami bagaimana penerapan prinsip desain SOLID dapat membantu membangun arsitektur aplikasi yang lebih rapi dan fleksibel, kita akan melihat contoh studi kasus sederhana berikut. 

Bayangkan kamu sedang membangun sistem manajemen artikel untuk blog berbasis PHP yang dihosting di Cloud VPS DomaiNesia.

1. Kebutuhan Proyek

  • Menyimpan dan menampilkan artikel.
  • Menambahkan fitur publikasi dan draf.
  • Mengirim notifikasi saat artikel baru dipublikasikan.
  • Menyediakan dua format output: HTML dan JSON (misal untuk API).

2. Sebelum Menggunakan Prinsip Desain SOLID

Berikut adalah contoh kode yang menunjukkan implementasi awal yang melanggar beberapa prinsip desain SOLID:

Baca Juga:  Apa Itu Artificial Intelligence (AI)? Pengertian, Cara Kerja, dan Contohnya

Masalah pada kode di atas:

  • Kelas ini menangani terlalu banyak peran atau tanggung jawab (Prinsip Single Responsibility Principle (SRP) dilanggar.).
  • Kode sulit untuk diuji atau dikembangkan tanpa mengubah kelas inti (Prinsip Open-Closed Principle (OCP) & Dependency Inversion Principle (DIP) dilanggar.).
  • Tidak ada pemisahan yang jelas antara antarmuka dan implementasi.

3. Setelah Menggunakan Prinsip Desain SOLID

a. Single Responsibility Principle (SRP)

Pisahkan peran atau tanggung jawab ke beberapa kelas kecil:

b. Open-Closed Principle (OCP) & Interface Segregation Principle (ISP)

Pisahkan logika output ke dalam antarmuka agar lebih mudah diperluas atau dikembangkan:

c. Dependency Inversion Principle (DIP)

Gunakan abstraksi untuk menampilkan artikel:

Hasilnya, dengan arsitektur software berbasis SOLID Design Principle, maka:

  • Kelas lebih terfokus pada satu tanggung jawab.
  • Lebih fleksibel, karena mudah menambahkan fitur baru (misalnya output ke XML) tanpa harus mengubah kelas utama.
  • Lebih mudah diuji, karena setiap bagian terpisah dan dapat diganti dengan mock/stub.

Berikut diagram alurnya:

SOLID Design Principle: Panduan Bangun Arsitektur Software 7

Kesimpulan

Dengan memahami dan menerapkan SOLID Design Principle, kita bisa membuat kode yang lebih bersih, fleksibel, dan mudah dikelola dalam jangka panjang. Prinsip desain SOLID bukan hanya teori akademis, tetapi pedoman praktis yang sangat berguna dalam membangun software modern.

Jika kamu sedang mengembangkan aplikasi berbasis PHP dan butuh server yang handal dan bisa dikonfigurasi sesuai kebutuhan, kamu bisa menggunakan layanan Cloud VPS DomaiNesia. 

Dengan performa tinggi dan harga terjangkau, layanan Cloud VPS ini juga sangat cocok untuk hosting aplikasi yang menerapkan prinsip-prinsip SOLID seperti yang kita bahas di atas. Yuk, mulai praktikkan prinsip desain SOLID sekarang, dan deploy aplikasi kamu di Cloud VPS DomaiNesia!

Ita Sugiharti

If this post has reached you, then I hope it helps. If you have any questions or feedback, just leave a comment.


Berlangganan Artikel

Dapatkan artikel, free ebook dan video
terbaru dari DomaiNesia

{{ errors.name }} {{ errors.email }}
Migrasi ke DomaiNesia

Migrasi Hosting ke DomaiNesia Gratis 1 Bulan

Ingin memiliki hosting dengan performa terbaik? Migrasikan hosting Anda ke DomaiNesia. Gratis jasa migrasi dan gratis 1 bulan masa aktif!

Ya, Migrasikan Hosting Saya