Wzorce projektowe – Strategy

Założenie: Zrozumieć i zaimplementować wzorzec projektowy Strategy w PHP, aby móc dynamicznie zmieniać algorytmy.

Krok po kroku:

  1. Stworzenie interfejsu dla strategii: Definiujemy interfejs, który będą implementowały konkretne strategie.
    
    interface PaymentStrategy {
      public function pay(float $amount): bool;
    }
    

    Ten kod definiuje interfejs `PaymentStrategy` z metodą `pay`, która przyjmuje kwotę do zapłaty i zwraca wartość logiczną wskazującą na sukces płatności.

  2. Implementacja konkretnych strategii: Tworzymy klasy implementujące interfejs `PaymentStrategy` dla różnych metod płatności.
    
    class PayPalStrategy implements PaymentStrategy {
      public function pay(float $amount): bool {
        // Logika płatności przez PayPal
        echo "Płatność przez PayPal: " . $amount . " zł\n";
        return true; // Symulacja udanej płatności
      }
    }
    
    class CreditCardStrategy implements PaymentStrategy {
      public function pay(float $amount): bool {
        // Logika płatności kartą kredytową
        echo "Płatność kartą kredytową: " . $amount . " zł\n";
        return true; // Symulacja udanej płatności
      }
    }
    

    Te klasy implementują interfejs `PaymentStrategy`, każda z nich realizując płatność w inny sposób.

  3. Klasa kontekstowa: Tworzymy klasę, która będzie korzystać z wybranych strategii.
    
    class Order {
      private PaymentStrategy $strategy;
    
      public function __construct(PaymentStrategy $strategy) {
        $this->strategy = $strategy;
      }
    
      public function processPayment(float $amount): bool {
        return $this->strategy->pay($amount);
      }
    }
    

    Klasa `Order` przechowuje instancję strategii i używa jej do przetworzenia płatności.

  4. Użycie strategii: Wybieramy i używamy odpowiedniej strategii.
    
    $order1 = new Order(new PayPalStrategy());
    $order1->processPayment(100.0);
    
    $order2 = new Order(new CreditCardStrategy());
    $order2->processPayment(50.0);
    

    W tym przykładzie tworzymy dwa zamówienia, każde z inną strategią płatności.

Ten przykład pokazuje podstawowe zastosowanie wzorca Strategy. Umożliwia on łatwe dodawanie nowych metod płatności bez modyfikacji klasy `Order`.

Zachęcamy do dalszego zgłębiania tematu wzorców projektowych w PHP!

Dodaj komentarz 0

Your email address will not be published. Required fields are marked *