PHP'de Bridge tasarım deseni

Feb 23 2023
Bu yapısal tasarım deseni PHP'de nasıl uygulanır?
Köprü Tasarım Modeli nedir? Köprü deseni, bir soyutlamayı uygulamasından ayıran bir tasarım desenidir, böylece ikisi bağımsız olarak değişebilir. PHP'de Bridge deseni arayüzler, soyut sınıflar ve kalıtım kullanılarak uygulanabilir.
Unsplash'ta Aleksandr Barsukov'un fotoğrafı

Köprü Tasarım Modeli nedir?

Köprü deseni, bir soyutlamayı uygulamasından ayıran bir tasarım desenidir, böylece ikisi bağımsız olarak değişebilir.

PHP'de Bridge deseni arayüzler, soyut sınıflar ve kalıtım kullanılarak uygulanabilir.

İşte PHP'de Bridge deseninin bir örnek uygulaması:

<?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.

Soyutlamayı ( Shape) uygulamasından ( DrawAPI) ayırarak her birini bağımsız olarak değiştirebiliriz. DrawAPI3Örneğin, sınıfların hiçbirini değiştirmeden bir uygulama ekleyebiliriz Shape.

Zaman ayırdığın için teşekkürler!

yapmaktan ve takip etmekten çekinmeyin!