Ir al contenido

25 minutos · En parejas

¿Qué está variando — y cuánto?

Fragmento A
class WelcomeNotifier {
    public function send(User $u): void {
        $msg = $this->buildMessage($u);
        $this->log('sending', $u);
        Mail::send($u->email, $msg);  // DISTINTO
        $this->log('sent', $u);
    }
}

class PromoNotifier {
    public function send(User $u): void {
        $msg = $this->buildMessage($u);
        $this->log('sending', $u);
        SMS::send($u->phone, $msg);  // DISTINTO
        $this->log('sent', $u);
    }
}

Estructura sugerida

s3m-taller/
├── Contracts/    ← abstracta o interfaz
└── Services/     ← implementaciones
Fragmento B
class PriceFormatter {
    public function format(float $n): string {
        switch ($this->locale) {
            case 'en_US':
                return '$' . number_format($n, 2);
            case 'de_DE':
                return number_format($n, 2, ',', '.') . ' €';
            case 'ja_JP':
                return '¥' . number_format($n, 0);
        }
    }
}

Estructura sugerida

s3m-taller/
├── Contracts/    ← interfaz
└── Formatters/   ← implementaciones

Para cada fragmento: ¿qué varía, cuánto varía, y qué patrón lo resuelve?