ضربه نزن شما پذیرفته شده اید
tl ؛ dr: از ترکیب الگوی بازدید کننده با نمونه چک
مشکلات
- نقض اصل باز/بسته
- جفت شدن
- حفظ قابلیت
- تکثیر کد
- خوانایی ضعیف
- طراحی شکننده
- در صورت
راه حل ها
- الگوی بازدید کننده را به درستی پیاده سازی کنید.
- اجتناب کردن نمونه چک
- نفع پلی مورفیسم.
- رفتار را محاصره کنید.
متن
وقتی از شما استفاده می کنید بازدید کننده الگوی ، شما هدف این است که الگوریتم های جداگانه از اشیاء که روی آنها کار می کنند.
ترکیب آن با نمونه بررسی این جدایی را می شکند و منجر به a می شود طراحی شکننده و سخت و سختبشر
کد نمونه
اشتباه
visitNeutronStar($object);
} elseif ($object instanceof Magnetar) {
$this-visitMagnetar($object);
} elseif ($object instanceof BlackHole) {
$this-visitBlackHole($object);
}
// Not closed for modification
}
private function visitNeutronStar(NeutronStar $star) {
// Handle neutron star observation
}
private function visitMagnetar(Magnetar $magnetar) {
// Handle magnetar observation
}
private function visitBlackHole(BlackHole $blackHole) {
// Handle black hole observation
}
}
درست
visitNeutronStar($this);
}
}
class Magnetar implements SpaceObject {
public...?php>
?php>