Single Responsibility Principle (SRP)

Single Responsibility Principle (SRP) dalam PHP:

Dalam PHP, SRP dapat diimplementasikan dengan memastikan bahwa setiap kelas memiliki satu dan hanya satu alasan untuk berubah. Misalnya, jika Anda memiliki kelas Product yang bertanggung jawab untuk menyimpan data produk, Anda tidak harus mencampuradukkan logika penyimpanan dan logika bisnis produk dalam satu kelas. Sebagai gantinya, pisahkan logika penyimpanan ke dalam kelas terpisah seperti ProductRepository atau DatabaseProductStorage, dan biarkan kelas Product hanya bertanggung jawab untuk logika bisnis produk.

Contoh PHP:

class Product {
    private $name;
    private $price;

    public function __construct($name, $price) {
        $this->name = $name;
        $this->price = $price;
    }

    // Getter and setter methods...

    public function calculateTax() {
        // Logika perhitungan pajak
    }
}

class ProductRepository {
    public function save(Product $product) {
        // Logika penyimpanan produk ke database
    }
}

Single Responsibility Principle (SRP) dalam JavaScript:

Dalam JavaScript, SRP dapat diterapkan dengan cara yang serupa. Pisahkan fungsi-fungsi yang berbeda ke dalam kelas atau modul yang berbeda. Misalnya, jika Anda memiliki kelas User yang menangani otentikasi pengguna, hindari menambahkan fungsi lain seperti pengelolaan profil pengguna dalam kelas yang sama.

Contoh JavaScript (ES6):

class User {
    constructor(username, password) {
        this.username = username;
        this.password = password;
    }

    // Metode otentikasi pengguna...
}

class UserProfileManager {
    constructor(user) {
        this.user = user;
    }

    updateProfile(newData) {
        // Logika pembaruan profil pengguna
    }
}

Single Responsibility Principle (SRP) dalam Golang:

Di Golang, SRP diterapkan dengan mendefinisikan struktur data (struct) dan metode terkait pada struktur tersebut. Struktur data harus hanya memiliki tanggung jawab yang spesifik.

Contoh Golang:

package main

import "fmt"

type Product struct {
    Name  string
    Price float64
}

func (p *Product) calculateTax() float64 {
    // Logika perhitungan pajak
    return p.Price * 0.1
}

func saveProductToDatabase(product Product) {
    // Logika penyimpanan produk ke database
}

func main() {
    product := Product{
        Name:  "Example Product",
        Price: 100.0,
    }

    tax := product.calculateTax()
    fmt.Println("Tax for the product:", tax)

    saveProductToDatabase(product)
}

Dalam contoh-contoh di atas, setiap kelas atau struktur data memiliki satu tanggung jawab yang spesifik: Product hanya mengurus logika bisnis produk, ProductRepository menangani penyimpanan produk, User menangani otentikasi pengguna, dan UserProfileManager menangani pengelolaan profil pengguna. Dengan memisahkan tanggung jawab seperti ini, Anda mematuhi prinsip Single Responsibility Principle (SRP).

Last updated