정책 패턴은 런타임에서 알고리즘 정책을 동적으로 선택할 수있는 행동 설계 패턴입니다. PHP에서 정책 패턴을 사용하면 논리 분리를 효과적으로 구현하고 코드 유연성 및 유지 관리 가능성을 향상시킬 수 있습니다. 이 모델은 개방형 원칙, 즉 확장에 개방되어 수정으로 닫힙니다.
전자 상거래 플랫폼을 예로 들어 보면 다양한 수준의 사용자는 다른 할인 전략을 즐깁니다. 일반 사용자의 경우 할인 없음, VIP 사용자의 경우 10% 할인, SVIP 사용자의 경우 20% 할인. 정책 모델을 통해 각 가격 책정 전략을 쉽게 관리 및 확장을 위해 독립 클래스로 캡슐화 할 수 있습니다.
abstract class PriceStrategy {
abstract public function calculatePrice($price);
}
다른 사용자 수준의 경우 Pricestrategy 에서 상속 된 세 가지 클래스를 작성하십시오.
class RegularStrategy extends PriceStrategy {
public function calculatePrice($price) {
return $price;
}
}
class VipStrategy extends PriceStrategy {
public function calculatePrice($price) {
return $price * 0.9;
}
}
class SvipStrategy extends PriceStrategy {
public function calculatePrice($price) {
return $price * 0.8;
}
}
주문 클래스는 정책 개체를 설정하여 유연한 가격 계산을 실현합니다.
class Order {
private $priceStrategy;
public function setPriceStrategy(PriceStrategy $strategy) {
$this->priceStrategy = $strategy;
}
public function calculateTotalPrice($price) {
return $this->priceStrategy->calculatePrice($price);
}
}
사용자 수준에 따라 정책 클래스를 동적으로 선택할 수 있습니다.
$order = new Order();
$regularStrategy = new RegularStrategy();
$order->setPriceStrategy($regularStrategy);
$regularPrice = $order->calculateTotalPrice(100); // 산출100
$vipStrategy = new VipStrategy();
$order->setPriceStrategy($vipStrategy);
$vipPrice = $order->calculateTotalPrice(100); // 산출90
$svipStrategy = new SvipStrategy();
$order->setPriceStrategy($svipStrategy);
$svipPrice = $order->calculateTotalPrice(100); // 산출80
정책 모델을 통해 다양한 비즈니스 규칙이 독립 클래스로 캡슐화되어 핵심 논리를 명확하게하고 확장 성이 우수합니다. 새로운 사용자 수준 정책을 추가 할 때는 기존 코드를 변경하지 않고도 새 정책 클래스 만 추가하면됩니다.
전략 모델은 PHP 개발에서 매우 실용적인 설계 모델이며, 행동이 변화하는 시스템 설계에 특히 적합합니다. 전략 모델을 합리적으로 사용함으로써 코드의 구조 및 유지 보수성을 효과적으로 개선 할 수 있고, 시스템 복잡성을 줄이고 개발 효율을 향상시킬 수 있습니다.