Это правильная реализация шаблона стратегии?

Ниже приведена реализация в PHP. Я хочу получить другой код купона и другую скидку, в зависимости от типа книги (винтажная или новая).

<?php

interface BookOffer {
function generateCoupon();
function generateDiscount();
}class VintageBookOffer implements BookOffer {
function generateCoupon() {
return "VINTAGECOUPONCODE";
}

function generateDiscount() {
return 10.0;
}
}class NewBookOffer implements BookOffer {
function generateCoupon() {
return "NEWBOOKCOUPONCODE";
}

function generateDiscount() {
return 5.0;
}
}class OfferGenerator {

function generateOffer($bookType) {

if($bookType == "vintage") {
$bookObject = new VintageBookOffer();
}
else if($bookType == "newbook") {
$bookObject = new NewBookOffer();
}

return $bookObject;
}
}$bookType1 = "vintage";
$bookType2 = "newbook";$offerGenerator = new OfferGenerator();
$bookOffer1 = $offerGenerator->generateOffer($bookType1);
$bookOffer2 = $offerGenerator->generateOffer($bookType2);echo "You chose book type " . $bookType1 . ". Your coupon code is " . $bookOffer1->generateDiscount() . ", and your discount is " . $bookOffer1->generateCoupon();

echo "You chose book type " . $bookType2 . ". Your coupon code is " . $bookOffer2->generateDiscount() . ", and your discount is " . $bookOffer2->generateCoupon();

?>

Это выглядит правильно? Я верю, что это так. Но любая обратная связь от сообщества будет приветствоваться. Единственная причина, по которой я думаю, что она может быть неправильной, заключается в том, что она не использует подсказки типов, что часто встречается в шаблоне стратегии.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]