Sobes.tech
Junior — Middle

Kunt u een voorbeeld geven van het meest complexe ontwerppatroon dat u in de praktijk hebt toegepast?

sobes.tech AI

Antwoord van AI

Een van de meest complexe ontwerppatronen waarmee ik in PHP heb gewerkt, is het "State"-patroon. Dit patroon stelt een object in staat om zijn gedrag te veranderen afhankelijk van zijn interne toestand, zonder zijn klasse te wijzigen.

Voorbeeld van gebruik: ik had een project met een bestelsysteem, waarbij de bestelling in verschillende staten kon verkeren (nieuw, betaald, verzonden, geannuleerd). In plaats van veel if-voorwaarden, implementeerde ik elke staat als een aparte klasse die een gemeenschappelijke interface implementeert, en wisselde ik de status van de bestelling dynamisch.

interface OrderState {
    public function proceed(OrderContext $order);
}

class NewOrderState implements OrderState {
    public function proceed(OrderContext $order) {
        // logica voor overgang naar "betaald"
        $order->setState(new PaidOrderState());
    }
}

class PaidOrderState implements OrderState {
    public function proceed(OrderContext $order) {
        // logica voor overgang naar "verzonden"
        $order->setState(new ShippedOrderState());
    }
}

class OrderContext {
    private $state;

    public function __construct(OrderState $state) {
        $this->state = $state;
    }

    public function setState(OrderState $state) {
        $this->state = $state;
    }

    public function proceed() {
        $this->state->proceed($this);
    }
}

// Gebruik
$order = new OrderContext(new NewOrderState());
$order->proceed(); // gaat naar PaidOrderState
$order->proceed(); // gaat naar ShippedOrderState

Dit patroon is complex omdat het een goed begrip van OOP-principes en een correct ontwerp van klassen vereist om de toestanden te beheren, maar het verbetert de leesbaarheid en uitbreidbaarheid van de code aanzienlijk.