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.