PHP 정책 모드 정의 및 사용법 예시
개술
정책 모드 는 대상 의 행동 모드 에 속한다.그 의 도 는 하나의 알고리즘 을 대상 으로 모든 알고리즘 을 공동 인 터 페 이 스 를 가 진 독립 된 클래스 에 밀봉 하여 서로 교체 할 수 있 도록 하 는 것 이다.정책 모드 로 인해 알고리즘 은 클 라 이언 트 에 영향 을 주지 않 는 상황 에서 변화 할 수 있 습 니 다.
UML 그림
정책 모드 의 주요 역할
이 모델 은 세 개의 캐릭터 로 설계 되 었 다.
환경 역할(Context):Strategy 참조
추상 적 인 전략(Strategy)역할:이것 은 추상 적 인 역할 로 보통 인터페이스 나 추상 적 인 유형 으로 이 루어 진다.이 역할 은 모든 구체 적 인 전략 류 에 필요 한 인 터 페 이 스 를 제공 합 니 다.
구체 적 인 전략(ConcreateStrategy)역할:관련 알고리즘 이나 행 위 를 포장 했다.
필드 사용
지금 카 트 시스템 을 설계 하 겠 다 고 가정 하면 가장 간단 한 상황 은 모든 상품 의 단 가 를 수량 에 곱 하 는 것 이지 만 실제 상황 은 이것 보다 복잡 할 것 이다.예 를 들 어 일반 회원 에 게 는 할인 이 없고 중급 회원 에 게 는 20%할인 을 해 주 며 고급 회원 에 게 는 70%할인 을 해 준다.
상술 한 설명 에 따 르 면 상품 가격 은 다음 과 같은 몇 가지 알고리즘 중의 하나 에 따라 진행 된다.
일반 회원 할인 없 음
중급 회원 에 게 20%할인
고급 회원 에 게 70%할인
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 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 논문 에서 말 한 것 이 여러분 의 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
laravel에 yo에서 angularJs&coffeescript를 사용할 수 있도록 한다.먼저 yo 명령을 사용할 수 있어야하므로 아래에서 설치 global에 설치한 곳에서 laravel의 프로젝트 루트로 이동. 클라이언트 코드를 관리하는 디렉토리를 만들고 이동합니다. 클라이언트 환경 만들기 이것으로 히...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.