Pola desain jembatan di PHP

Feb 23 2023
Bagaimana menerapkan pola desain struktural ini di PHP
Apa itu Pola Desain Jembatan? Pola Bridge adalah pola desain yang memisahkan abstraksi dari implementasinya, sehingga keduanya dapat berbeda secara independen. Di PHP, pola Bridge dapat diimplementasikan menggunakan antarmuka, kelas abstrak, dan pewarisan.
Foto oleh Aleksandr Barsukov di Unsplash

Apa itu Pola Desain Jembatan?

Pola Bridge adalah pola desain yang memisahkan abstraksi dari implementasinya, sehingga keduanya dapat berbeda secara independen.

Di PHP, pola Bridge dapat diimplementasikan menggunakan antarmuka, kelas abstrak, dan pewarisan.

Berikut ini contoh penerapan pola Bridge di PHP:

<?php

interface DrawAPI {
    public function drawCircle($x, $y, $radius);
}

class DrawAPI1 implements DrawAPI {
    public function drawCircle($x, $y, $radius) {
        echo "API1.circle at ($x,$y) radius $radius.\n";
    }
}

class DrawAPI2 implements DrawAPI {
    public function drawCircle($x, $y, $radius) {
        echo "API2.circle at ($x,$y) radius $radius.\n";
    }
}

abstract class Shape {
    protected $drawAPI;
    
    protected function __construct(DrawAPI $drawAPI) {
        $this->drawAPI = $drawAPI;
    }
    
    public abstract function draw();
}

class CircleShape extends Shape {
    private $x, $y, $radius;
    
    public function __construct($x, $y, $radius, DrawAPI $drawAPI) {
        parent::__construct($drawAPI);
        $this->x = $x;
        $this->y = $y;
        $this->radius = $radius;
    }
    
    public function draw() {
        $this->drawAPI->drawCircle($this->x, $this->y, $this->radius);
    }
}

// Usage:
$shape1 = new CircleShape(1, 2, 3, new DrawAPI1());
$shape2 = new CircleShape(5, 7, 11, new DrawAPI2());

$shape1->draw(); // Output: API1.circle at (1,2) radius 3.
$shape2->draw(); // Output: API2.circle at (5,7) radius 11.

Dengan memisahkan abstraksi ( Shape) dari implementasinya ( DrawAPI), kita dapat memvariasikan masing-masing secara independen. Misalnya, kita dapat menambahkan DrawAPI3implementasi tanpa mengubah kelas apa pun Shape.

Terima kasih atas waktu Anda!

Jangan ragu untuk dan ikuti!