DEV Community

Cover image for Series Belajar Solid Principle - Single Responsibility Principle (SRP)
Muhamad Reza Abdul Rohim
Muhamad Reza Abdul Rohim

Posted on

Series Belajar Solid Principle - Single Responsibility Principle (SRP)

Dalam dunia pengembangan perangkat lunak, SRP merupakan salah satu konsep yang sangat fundamental. SRP adalah bagian dari SOLID Principle.

Dalam artikel ini, gw akan mengulas SRP secara detail dan menerapkannya dalam konteks pengembangan aplikasi menggunakan PHP.
kenapa menggunakan PHP? karena PHP Bahasa Pemrograman Sejuta umat, agar mudah dimengerti oleh khalayak ramai :D.

Apa Itu Single Responsibility Principle (SRP)?

SRP adalah prinsip desain perangkat lunak (Design Pattern) yang menyatakan bahwa sebuah class harus bertanggung jawab atas satu hal saja. Ini membantu menjaga class tetap terfokus, mudah dimengerti, dan mudah diubah.

Contoh kodingan tanpa menerapkan SRP

Mari kita lihat contoh sebelum menerapkan SRP. Misalkan kita memiliki class CheckoutManager dalam sebuah toko online. class ini bertanggung jawab untuk melakukan sejumlah tindakan seperti memperbarui database, mengirim email konfirmasi, dan mengirim pesan WhatsApp kepada pelanggan.

class CheckoutManager {
    public function processCheckout($cartItems, $customerInfo) {
        $this->updateDatabase($cartItems);
        $this->sendEmail($customerInfo);
        $this->sendWhatsAppMessage($customerInfo);
    }

    private function updateDatabase($cartItems) {
        // Logika untuk memperbarui status dalam database
    }

    private function sendEmail($customerInfo) {
        // Logika untuk mengirim email konfirmasi kepada pelanggan
    }

    private function sendWhatsAppMessage($customerInfo) {
        // Logika untuk mengirim pesan WhatsApp konfirmasi kepada pelanggan
    }
}
Enter fullscreen mode Exit fullscreen mode

Penerapan SRP

Sekarang, mari kita terapkan SRP dengan membagi tanggung jawab tersebut ke dalam class class yang lebih spesifik.

Pembaruan Database

class DatabaseUpdater {
    public function update($cartItems) {
        // Logika untuk memperbarui status dalam database
    }
}
Enter fullscreen mode Exit fullscreen mode

Kirim Email

class EmailSender {
    public function send($customerInfo) {
        // Logika untuk mengirim email konfirmasi kepada pelanggan
    }
}
Enter fullscreen mode Exit fullscreen mode

kirim whatsapp

class WhatsAppSender {
    public function send($customerInfo) {
        // Logika untuk mengirim pesan WhatsApp konfirmasi kepada pelanggan
    }
}
Enter fullscreen mode Exit fullscreen mode

Integrasi dengan SRP

Sekarang, kita dapat mengintegrasikan class class tersebut ke dalam CheckoutManager.


class CheckoutManager {
    private $databaseUpdater;
    private $emailSender;
    private $whatsAppSender;

    public function __construct(DatabaseUpdater $databaseUpdater, EmailSender $emailSender, WhatsAppSender $whatsAppSender) {
        $this->databaseUpdater = $databaseUpdater;
        $this->emailSender = $emailSender;
        $this->whatsAppSender = $whatsAppSender;
    }

    public function processCheckout($cartItems, $customerInfo) {
        $this->databaseUpdater->update($cartItems);
        $this->emailSender->send($customerInfo);
        $this->whatsAppSender->send($customerInfo);
    }
}
Enter fullscreen mode Exit fullscreen mode

Dengan menerapkan SRP, kita dapat membuat kode kita lebih terstruktur, mudah dimengerti, dan mudah dikelola. Setiap class sekarang memiliki tanggung jawab yang jelas dan terdefinisi dengan baik, sehingga membantu meningkatkan keberlanjutan dan skalabilitas kode kita 🚀.

Sekian sekilas mengenai SRP. di next artikel gw akan buat artikel mengenai SOLID Princple lainnya yaitu Open Close Principle,Liskov Substitution Principle,Interface Segregation Principle dan Dependency Inversion Principle, so tunggu aja gaes updatenya tengkyu..

Top comments (0)