আমি পিএইচপি অবজেক্টস, প্যাটার্নস এবং অনুশীলন পড়ছি । লেখক একটি কলেজে একটি পাঠের মডেল দেওয়ার চেষ্টা করছেন। লক্ষ্যটি পাঠ্য প্রকার (বক্তৃতা বা সেমিনার) আউটপুট করা এবং পাঠের জন্য চার্জগুলি এটি প্রতি ঘন্টা বা স্থির মূল্যের পাঠের উপর নির্ভর করে output সুতরাং আউটপুট হওয়া উচিত
Lesson charge 20. Charge type: hourly rate. Lesson type: seminar.
Lesson charge 30. Charge type: fixed rate. Lesson type: lecture.
নিম্নলিখিত হিসাবে ইনপুট যখন হয়:
$lessons[] = new Lesson('hourly rate', 4, 'seminar');
$lessons[] = new Lesson('fixed rate', null, 'lecture');
আমি এটি লিখেছি:
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 />";
}
তবে বই অনুসারে, আমি ভুল (আমিও নিশ্চিত, আমিও আছি)। পরিবর্তে, সমাধান হিসাবে লেখক ক্লাসগুলির একটি বৃহত্তর শ্রেণিবিন্যাস দিয়েছেন। পূর্ববর্তী অধ্যায়ে, লেখক নিম্নলিখিত 'চারটি সাইনপোস্ট' এমন সময় হিসাবে বর্ণনা করেছিলেন যখন আমার শ্রেণি কাঠামোটি পরিবর্তনের বিষয়ে বিবেচনা করা উচিত:
- কোড সদৃশ
- যে শ্রেণীটি তার প্রসঙ্গে খুব বেশি জানত
- সবজান্তা - ক্লাস অনেক কিছু করার চেষ্টা
- শর্তাধীন বিবৃতি
আমি দেখতে পাচ্ছি একমাত্র সমস্যা শর্তসাপেক্ষ বিবৃতি, এবং তাও একটি অস্পষ্ট পদ্ধতিতে - তবে এটি কেন রিফ্যাক্টর? ভবিষ্যতে এমন কোন সমস্যা দেখা দিতে পারে যা আমি আগেই ভাবিনি?
আপডেট : আমি উল্লেখ করতে ভুলে গেছি - এটি সমাধান হিসাবে লেখক প্রদত্ত শ্রেণিবদ্ধ কাঠামো - কৌশলটির ধরণ :