Задание:
/**
* @charset UTF-8
*
* Задание 3
* В данный момент компания X работает с двумя перевозчиками
* 1. Почта России
* 2. DHL
* У каждого перевозчика своя формула расчета стоимости доставки посылки
* Почта России до 10 кг берет 100 руб, все что cвыше 10 кг берет 1000 руб
* DHL за каждый 1 кг берет 100 руб
* Задача:
* Необходимо описать архитектуру на php из методов или классов для работы с
* перевозчиками на предмет получения стоимости доставки по каждому из указанных
* перевозчиков, согласно данным формулам.
* При разработке нужно учесть, что количество перевозчиков со временем может
* возрасти. И делать расчет для новых перевозчиков будут уже другие программисты.
* Поэтому необходимо построить архитектуру так, чтобы максимально минимизировать
* ошибки программиста, который будет в дальнейшем делать расчет для нового
* перевозчика, а также того, кто будет пользоваться данным архитектурным решением.
*
*/
Решение:
abstract class Transporter {
public $weight;
abstract public function transport_price($weight);
}
class Transporter_dhl extends Transporter {
public function transport_price($weight) {
return $weight*100;
}
}
class Transporter_ruspost extends Transporter {
public function transport_price($weight) {
if($weight < 10){
return 100;
}
return 1000;
}
}
// При добавления новой транспортной компании
class Transporter_ska extends Transporter {
public function transport_price($weight) {
return $weight*740;
}
}
$weight = 120;
$auto = new Transporter_ska();
$cost = $auto->transport_price($weight);
echo($cost);