نحوه اجرای صحیح الگوی بازدید کننده

ضربه نزن شما پذیرفته شده اید

tl ؛ dr: از ترکیب الگوی بازدید کننده با نمونه چک

مشکلات

  • نقض اصل باز/بسته
  • جفت شدن
  • حفظ قابلیت
  • تکثیر کد
  • خوانایی ضعیف
  • طراحی شکننده
  • در صورت

راه حل ها

  1. الگوی بازدید کننده را به درستی پیاده سازی کنید.
  2. اجتناب کردن نمونه چک
  3. نفع پلی مورفیسم.
  4. رفتار را محاصره کنید.

متن

وقتی از شما استفاده می کنید بازدید کننده الگوی ، شما هدف این است که الگوریتم های جداگانه از اشیاء که روی آنها کار می کنند.

ترکیب آن با نمونه بررسی این جدایی را می شکند و منجر به 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...

Source link