[php] 전략 디자인 패턴

전략 디자인 패턴 구성요소

전략 디자인 패턴은 다음과 같은 핵심 구성요소를 가지고 있습니다.

  1. 전략(Strategy) 인터페이스: 여러 알고리즘을 나타내는 일반적인 인터페이스를 정의합니다.
  2. 구체적인 전략(Concrete Strategy) 클래스: 전략 인터페이스를 구현하는 여러 알고리즘 클래스를 포함합니다.
  3. 컨텍스트(Context) 클래스: 전략 객체를 참조하며 클라이언트에게 알고리즘을 제공합니다.

전략 디자인 패턴 예시

아래는 PHP로 구현된 간단한 전략 디자인 패턴의 예시 코드입니다.

<?php
// 전략 인터페이스
interface PaymentStrategy {
    public function pay($amount);
}

// 신용카드 결제 전략
class CreditCardPayment implements PaymentStrategy {
    public function pay($amount) {
        echo "Paid $amount using credit card.";
    }
}

// 페이팔 결제 전략
class PayPalPayment implements PaymentStrategy {
    public function pay($amount) {
        echo "Paid $amount using PayPal.";
    }
}

// 컨텍스트 클래스
class ShoppingCart {
    private $paymentMethod;

    public function __construct(PaymentStrategy $paymentMethod) {
        $this->paymentMethod = $paymentMethod;
    }

    public function checkout($amount) {
        $this->paymentMethod->pay($amount);
    }
}

// 클라이언트 코드
$shoppingCart = new ShoppingCart(new CreditCardPayment());
$shoppingCart->checkout(100);
?>

위 코드는 전략 디자인 패턴을 사용하여 다양한 결제 전략을 구현하고 클라이언트가 해당 전략을 선택하여 사용할 수 있도록 합니다.

전략 디자인 패턴은 알고리즘을 변경해야 할 때 유용하며, 코드의 유연성과 재사용성을 높일 수 있는 강력한 디자인 패턴입니다.

더 많은 정보는 전략 디자인 패턴을 확인해보세요.