Pode dar um exemplo do padrão de design mais complexo que já aplicou na prática?
sobes.tech IA
Resposta da IA
Um dos padrões de design mais complexos com que trabalhei em PHP é o padrão "Estado" (State). Este padrão permite que um objeto altere o seu comportamento dependendo do seu estado interno, sem alterar a sua classe.
Exemplo de uso: tinha um projeto com um sistema de pedidos, onde o pedido podia estar em diferentes estados (novo, pago, enviado, cancelado). Em vez de múlticos operadores condicionais, implementei cada estado como uma classe separada que implementa uma interface comum, e alterava dinamicamente o estado do pedido.
interface OrderState {
public function proceed(OrderContext $order);
}
class NewOrderState implements OrderState {
public function proceed(OrderContext $order) {
// lógica para passar ao estado "pago"
$order->setState(new PaidOrderState());
}
}
class PaidOrderState implements OrderState {
public function proceed(OrderContext $order) {
// lógica para passar ao estado "enviado"
$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);
}
}
// Uso
$order = new OrderContext(new NewOrderState());
$order->proceed(); // passa a PaidOrderState
$order->proceed(); // passa a ShippedOrderState
Este padrão é complexo porque requer uma boa compreensão dos princípios de POO e um design correto de classes para gerir os estados, mas melhora significativamente a legibilidade e a extensibilidade do código.