Interface Segregation Principle (ISP)

Interface Segregation Principle (ISP) dalam PHP:

Dalam PHP, ISP dapat diterapkan dengan mendefinisikan antarmuka (interface) yang spesifik untuk setiap klien (pengguna interface). Dengan cara ini, setiap klien hanya perlu bergantung pada metode yang diperlukannya, tidak perlu mengimplementasikan metode yang tidak digunakan.

Contoh PHP dengan ISP:

// Antarmuka untuk printer
interface Printer {
    public function printContent();
}

// Antarmuka untuk pemindai
interface Scanner {
    public function scan();
}

class AllInOnePrinter implements Printer, Scanner {
    public function printContent() {
        // Implementasi untuk mencetak konten
    }

    public function scan() {
        // Implementasi untuk pemindaian
    }
}

Dalam contoh ini, Printer dan Scanner adalah dua antarmuka terpisah, masing-masing digunakan oleh klien yang membutuhkan fungsionalitas cetak dan pemindaian. Kelas AllInOnePrinter mengimplementasikan kedua antarmuka tersebut, mematuhi prinsip Interface Segregation Principle.

Interface Segregation Principle (ISP) dalam JavaScript:

Dalam JavaScript, ISP dapat diterapkan dengan cara yang mirip dengan PHP, dengan mendefinisikan antarmuka yang spesifik untuk klien yang membutuhkan fungsionalitas tertentu.

Contoh JavaScript (ES6) dengan ISP:

// Antarmuka untuk printer
class Printer {
    printContent() {
        throw new Error("Method 'printContent()' must be implemented");
    }
}

// Antarmuka untuk pemindai
class Scanner {
    scan() {
        throw new Error("Method 'scan()' must be implemented");
    }
}

class AllInOnePrinter extends Printer {
    printContent() {
        // Implementasi untuk mencetak konten
    }
}

class AllInOneScanner extends Scanner {
    scan() {
        // Implementasi untuk pemindaian
    }
}

Dalam contoh ini, Printer dan Scanner adalah kelas yang menyatakan metode yang diperlukan. Kelas AllInOnePrinter dan AllInOneScanner mengimplementasikan metode-metode ini, sesuai dengan kebutuhan klien masing-masing.

Interface Segregation Principle (ISP) dalam Golang:

Dalam Golang, ISP dapat diterapkan dengan cara yang serupa dengan PHP dan JavaScript, dengan mendefinisikan antarmuka yang spesifik untuk klien yang membutuhkan fungsionalitas tertentu.

Contoh Golang dengan ISP:

package main

import (
    "fmt"
)

type Printer interface {
    PrintContent()
}

type Scanner interface {
    Scan()
}

type AllInOneDevice struct {
    // Implementasi AllInOneDevice
}

func (aio AllInOneDevice) PrintContent() {
    // Implementasi untuk mencetak konten
}

func (aio AllInOneDevice) Scan() {
    // Implementasi untuk pemindaian
}

func main() {
    aio := AllInOneDevice{}
    aio.PrintContent()
    aio.Scan()
}

Dalam contoh ini, Printer dan Scanner adalah antarmuka yang menyatakan metode yang diperlukan. AllInOneDevice mengimplementasikan kedua antarmuka tersebut, mematuhi prinsip Interface Segregation Principle. Dengan demikian, kelas yang menggunakannya hanya perlu mengimplementasikan metode yang relevan dengan kebutuhannya.

Last updated