💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۱۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۰ amir tavakolian
مثال از دیزاین پترن Visitor
جامعه مهندسی نرم افزار ایجاد شده در ۲۴ آذر ۱۴۰۱

سلام دوستان.

برای این الگو طراحی یک مثال میزنم امیدوارم به درک بهتر این دیزاین پترن کمک کنه

فرض کنید ما یک بیمار داریم و قرار چند دکتر اون رو معاینه کنند

اول یک اینترفیس برای این بیمار که نقش Element رو داره مینویسیم

interface IPatient
{
    public function accept(DoctorVistor $visitor);
}

حالا باید یک اینترفیس برای visitor‌ها که اینجا همون دکترها هستند نوشته بشه

interface DoctorVistor
{
    public function heartCheck(IPatient $patient);  // gereftane navare ghalb az bimar 
    public function brainCheck(IPatient $patient);  // gereftane navare maghz az bimar
}

حالا باید concrit visitor‌ها رو بنویسیم

class DoctorA implements DoctorVistor
{
    public function HeartCheck(IPatient $patient)
    {
      echo "checking heart";
    }
    public function BrainCheck(IPatient $patient)
    {
      echo "checking brain";
    }
}

حالا concrit elemnt‌ها رو مینویسیم که از ورودی باید visitor رو بگیره

class Patient implements IPatient
{
    public function accept(DoctorVistor $visitor)
    {
        $visitor->heartCheck();
    }
}

اینطوری به آبجکت بیمار ی سری الگوریتم یا رفتارها رو اضافه کردیم بدون اینکه بخواین تغییری در کدهای آبجکت بیمار اضافه کنیم

موفق باشید....