Logo

dev-resources.site

for different kinds of informations.

Series Belajar Solid Principle - Single Responsibility Principle (SRP)

Published at
4/17/2024
Categories
programming
solid
srp
indonesia
Author
julles
Categories
4 categories in total
programming
open
solid
open
srp
open
indonesia
open
Author
6 person written this
julles
open
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..

solid Article's
30 articles in total
Favicon
Understanding SOLID Principles with C# (short intro)
Favicon
Open-Closed Principle (OCP)-Part-2
Favicon
The O of SOLID
Favicon
The S of SOLID
Favicon
SOLID Principles
Favicon
Applying Open Closed Principle to Real-World Code
Favicon
Applying Single Responsibility Principle to Real-World Code
Favicon
Line-Perfect Comparison of TodoMVC Apps
Favicon
SOLID Principles in Functional Programming (FP) with examples
Favicon
SOLID Principles in React: The Key to Writing Maintainable Components
Favicon
Template
Favicon
Dependency Inversion Principle
Favicon
Liskov Substitution Principle
Favicon
Interface Segregation Principle
Favicon
Single Responsibility Principle
Favicon
Understanding SOLID Principles with Python Examples
Favicon
Unlearning SOLID: My Path to More Nuanced Code Evaluation
Favicon
SOLID Design Principles in Ruby
Favicon
About the "S" in Solid
Favicon
TypeScript Interfaces: Crafting Code with Creative Precision
Favicon
Application of S.O.D. in frontend development
Favicon
Series Belajar Solid Principle - Liskov Substitution Principle (LSP)
Favicon
Series Belajar Solid Principle - Open Close Principle (OCP)
Favicon
SOLID + ReactJS
Favicon
Series Belajar Solid Principle - Single Responsibility Principle (SRP)
Favicon
Arquitetura hexagonal: a sinergia dos princรญpios de desenvolvimento e boas prรกticas
Favicon
Implementing Dependency Inversion Principle in Nest.js using Abstract Classes
Favicon
Tackling Temporal Dependency in Classes
Favicon
SOLID Principles
Favicon
SOLID Principles: It's That Easy! ๐Ÿ˜ฑ STANDOUT ๐ŸŒŸ with SOLID Principles! ๐Ÿง™โ€โ™‚๏ธโœจ

Featured ones: