За последние 24 часа нас посетили 40025 программистов и 2356 роботов. Сейчас ищут 1196 программистов ...

Шаблон стратегия

Тема в разделе "PHP для новичков", создана пользователем Dimon2x, 19 апр 2017.

  1. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.211
    Симпатии:
    186
    Есть такое задание:

    Имеется 2 платёжные системы.

    Если в корзине набралось товаров на сумму больше или равно 500, то платить надо, кредитной картой.

    Если набралось на сумму более 200 и менее 500, то платить с помощью PayPal.

    Это правильное решение?

    PHP:
    1. <?php
    2. interface payStrategy{
    3.     public function pay($amount);
    4. }
    5.  
    6. class payByCC implements payStrategy{
    7.     private $ccNum = '';
    8.     private $ccType = '';
    9.     private $cvvNum = '';
    10.     private $ccExpMoth = '';
    11.     private $ccExpYear = '';
    12.    
    13.     public function pay($amount = 0){
    14.         echo 'Заплатите ' . $amount . ' с помощью кредитной карты';
    15.     }
    16. }
    17.  
    18. class payByPayPal implements payStrategy{
    19.     private $payPalEmail = '';
    20.    
    21.     public function pay($amount = 0){
    22.         echo 'Заплатите ' . $amount . ' с помощью PayPal';
    23.     }
    24. }
    25.  
    26. class shoppingCart{
    27.     public $amount = 0;
    28.    
    29.     public function __construct($amount = 0){
    30.         $this->amount = $amount;
    31.     }
    32.     public function payAmount(){
    33.         if($this->amount >=500){
    34.             $payment = new payByCC();
    35.         }
    36.        
    37.         elseif($this->amount >= 200 && $this->amount < 500){
    38.             $payment = new payByPayPal();
    39.         }
    40.         $payment->pay($this->amount);
    41.     }
    42. }
    43.  
    44. $cart = new shoppingCart(700);
    45. $cart->payAmount();
    46.  
    47. echo '<br>';
    48.  
    49. $cart = new shoppingCart(300);
    50. $cart->payAmount();
     
  2. t1grok

    t1grok Новичок

    С нами с:
    29 янв 2017
    Сообщения:
    119
    Симпатии:
    32
    И как я должен понимать, что в методе payAmount нужно создавать объект реализующий интерфейс payStrategy? Пользы, в данном случае, существования интерфейса payStrategy вообще никакой.