PHP Nesneleri, Desenler ve Pratik okuyorum . Yazar bir üniversitede bir ders modellemeye çalışıyor. Amaç ders tipini (ders veya seminer) ve ders ücretini saatlik veya sabit fiyat dersine bağlı olarak vermektir. Yani çıktı
Lesson charge 20. Charge type: hourly rate. Lesson type: seminar.
Lesson charge 30. Charge type: fixed rate. Lesson type: lecture.
giriş aşağıdaki gibi olduğunda:
$lessons[] = new Lesson('hourly rate', 4, 'seminar');
$lessons[] = new Lesson('fixed rate', null, 'lecture');
Bunu ben yazdım:
class Lesson {
private $chargeType;
private $duration;
private $lessonType;
public function __construct($chargeType, $duration, $lessonType) {
$this->chargeType = $chargeType;
$this->duration = $duration;
$this->lessonType = $lessonType;
}
public function getChargeType() {
return $this->getChargeType;
}
public function getLessonType() {
return $this->getLessonType;
}
public function cost() {
if($this->chargeType == 'fixed rate') {
return "30";
} else {
return $this->duration * 5;
}
}
}
$lessons[] = new Lesson('hourly rate', 4, 'seminar');
$lessons[] = new Lesson('fixed rate', null, 'lecture');
foreach($lessons as $lesson) {
print "Lesson charge {$lesson->cost()}.";
print " Charge type: {$lesson->getChargeType()}.";
print " Lesson type: {$lesson->getLessonType()}.";
print "<br />";
}
Ama kitaba göre yanılıyorum (benim de eminim). Bunun yerine, yazar çözüm olarak büyük bir sınıf hiyerarşisi verdi. Önceki bir bölümde yazar, sınıf yapımı değiştirmeyi düşünmem gereken zaman olarak aşağıdaki 'dört tabela' ifadesini kullandı:
- Kod çoğaltma
- Bağlamı hakkında çok şey bilen sınıf
- Tüm esnaf jack - çok şeyler yapmaya çalışıyoruz sınıflar
- Koşullu ifadeler
Görebildiğim tek sorun koşullu ifadeler ve bu da belirsiz bir şekilde - öyleyse neden bunu yeniden düzenleyelim? Gelecekte tahmin edemediğim hangi problemlerin ortaya çıkabileceğini düşünüyorsunuz?
Güncelleme : Bahsetmeyi unuttum - bu yazarın bir çözüm olarak sağladığı sınıf yapısı - strateji modeli :