PHP 전략 패턴 분석 예시

小云云
풀어 주다: 2023-03-19 19:44:01
원래의
1706명이 탐색했습니다.

개요

전략 패턴은 객체의 행동 패턴에 속합니다. 그 의도는 일련의 알고리즘을 대상으로 하고 각 알고리즘을 공통 인터페이스가 있는 독립적인 클래스로 캡슐화하여 서로 교체할 수 있도록 하는 것입니다. 전략 패턴을 사용하면 클라이언트에 영향을 주지 않고 알고리즘을 변경할 수 있습니다.

이 글은 주로 PHP 전략 패턴의 정의와 사용법을 소개합니다. PHP 전략 패턴의 원리와 구현, 사용법을 간략하게 분석하여 도움이 필요한 친구들이 참고할 수 있기를 바랍니다. .

UML 다이어그램

전략 패턴의 주요 역할

이 패턴은 세 가지 역할로 설계되었습니다.

환경 역할(컨텍스트): 전략에 대한 참조를 보유합니다.
추상 전략(전략) 역할: 이는 추상화 역할, 일반적으로 인터페이스나 추상 클래스에 의해 구현됩니다. 이 역할은 특정 전략 클래스에 필요한 모든 인터페이스를 제공합니다
특정 전략(ConcreateStrategy) 역할: 관련 알고리즘 또는 동작 패키징

사용 시나리오

이제 장바구니 시스템을 설계한다고 가정합니다. 가장 간단한 사례는 단가에 곱하는 것입니다. 모든 항목은 수량에 따라 결정되지만 실제 상황은 확실히 이보다 더 복잡합니다. 예를 들어 일반회원은 할인이 없고, 중급회원은 20%, 상급회원은 30% 할인이 적용됩니다.

위 설명에 따르면 상품 가격은 다음 알고리즘 중 하나에 따라 결정됩니다.

일반 회원 할인 없음
중급 회원 20% 할인
고급 회원 30% 할인

UML 다이어그램

구현 코드 :

<?php
/**
 * 策略抽象类
 * @author wzy
 *
 */
interface Strategy
{
  public function calPrice ($price);
}
/**
 * 普通会员策略类
 *
 * @author wzy
 *
 */
class PrimaryStrategy implements Strategy
{
  public function calPrice ($price)
  {
    echo "普通会员无折扣";
    return $price;
  }
}
/**
 * 中级会员策略类
 *
 * @author wzy
 *
 */
class MiddleStrategy implements Strategy
{
  public function calPrice ($price)
  {
    echo "中级会员8折优惠";
    return $price * 0.8;
  }
}
/**
 * 高级会员策略类
 *
 * @author wzy
 *
 */
class HighStrategy implements Strategy
{
  public function calPrice ($price)
  {
    echo "高级会员7折优惠";
    return $price * 0.7;
  }
}
/**
 * Context实现类
 *
 * @author wzy
 *
 */
class Price
{
  /**
   * 具体的策略类对象
   *
   * @var object
   */
  private $strategyInstance;
  /**
   * 构造函数,传入一个具体的策略对象
   *
   * @param object $instance
   */
  public function __construct ($instance)
  {
    $this->strategyInstance = $instance;
  }
  /**
   * 计算货品的价格
   *
   * @param double $price
   */
  public function quote ($price)
  {
    return $this->strategyInstance->calPrice($price);
  }
}
/**
 * 客户端操作
 */
$high = new HighStrategy();
$priceClass = new Price($high);
$price = $priceClass->quote(400);
echo $price;
?>
로그인 후 복사

전략 패턴 검토

전략 패턴의 초점은 알고리즘을 구현하는 방법이 아니라 이러한 알고리즘을 구성하고 호출하는 방법에 있으며, 이를 통해 프로그램 구조를 보다 유연하게 만들고 확장성과 유지 관리성을 향상시킵니다.

알고리즘의 평등

전략 모델의 가장 큰 특징은 각 전략 알고리즘의 평등성입니다. 일련의 특정 전략 알고리즘의 경우 모든 사람이 동일한 상태를 가지므로 알고리즘 간의 상호 변환이 가능합니다

런타임 전략의 고유성

런타임 동안 전략 모드는 매 순간 하나의 특정 전략만 사용할 수 있습니다. 서로 다른 전략 구현 간에 동적으로 전환할 수 있으며 하나만 있습니다.

관련 권장 사항:

PHP 디자인 패턴의 전략 패턴에 대한 자세한 설명

전략 패턴 구현 확인

javascript 전략 패턴, 자세한 설명 템플릿 모드 사용 시나리오 및 구현 코드

위 내용은 PHP 전략 패턴 분석 예시의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿