디자인 모드 - 전략 모드 - 예 2

2005 단어 디자인 모드
본 고 는 현실 장면 에서 나 왔 다. M 회 사 는 모 영화관 에 극장 매 표 시스템 을 개 발 했 는데 이 시스템 에서 서로 다른 유형의 사용자 에 게 서로 다른 영화 표 할인 방식 을 제공 해 야 한다. 구체 적 인 할인 방안 은 다음 과 같다. (1) 학생 들 은 학생증 에 따라 20% 할인 혜택 을 받 을 수 있다.(2) 만 10 세 이하 의 어린 이 는 표 한 장 에 10 위안 을 감면 하 는 혜택 을 받 을 수 있다 (원래 표 값 은 20 위안 이상 이 필요 하 다).(3) 극장 VIP 이용 자 는 관람료 20% 할인 혜택 외 에 도 포 인 트 를 적립 할 수 있 으 며, 포 인 트 를 일정 한도 로 적립 하면 영화관 에서 증정 하 는 상품 으로 교환 할 수 있다.
이 시스템 은 앞으로 수요 에 따라 더 많은 할인 방안 을 도입 할 수도 있다.정책 모드 는 다음 세 개의 캐릭터 를 포함 합 니 다:
  (1)Context(   ):        ,                 。
  (2)Strategy(     ):        ,                。=>              
  (3)ConcreteStrategy(     ):               。


인터페이스 클래스
/**
 *     .
 */
interface IDiscount
{
    public function Calculate($price);

}

/**
 *    
 */
class MovieTiket
{
    private  $_price;

    private  $_discount;


    public function __construct($price){

        $this->_price = $price;
    }

    //  
    public function Price(){

        echo "    :".$this->_price."
"; } // public function Discount(IDiscount $discount){ $this->_price = $discount->Calculate($this->_price); } } /** * */ include "IDiscount.php"; class StudentDiscount implements IDiscount { public function Calculate($price){ echo " "; return $price * 0.8; } } /** * vip */ include "IDiscount.php"; class VipDiscount implements IDiscount { public function Calculate($price) { // TODO: Implement Calculate() method. echo "vip , "; return $price * 0.5; } } /** * */ class ChildrenDiscount implements IDiscount { public function Calculate($price) { echo " "; return $price - 10; } } //test include "MovieTiket.php"; include "StudentDiscount.php"; $mk = new MovieTiket(50); //vip $mk->Discount(new StudentDiscount()); $mk->Price();

좋은 웹페이지 즐겨찾기