Design Pattern Visitor

Design Pattern Visitor

omid sotooni

omidsotooni

الگوهای طراحی: الگوی طراحی Visitor

جداکردن داده ها از الگوریتم های که روی داده ها باید انجام شود باعث به وجود آمدن Loos capping می شود.الگوی Visitor داده ها را از الگوریتم و متد ها جدا می کند تا بدونه دانستن ساختار داده ها به داده ها دسترسی داشته باشیم. این الگو زمانی استفاده می شود که کلکسیونی از داده داشته باشیم و قرار باشد متدی بر روی این کلکسیون بدونه دانستن ساختار داده کار کند. این الگو دارای متد های همچون Attach وdetach برای مدیریت کلکسیون داده ها می باشد. برای مثال یک سیستم با چند زیرسیستم را در نظر بگیرید که می خواهیم به صورت دوره این زیر سیستم ها را بررسی کنیم.

هدفساده سازی انجام یک عملیات برروی مجموعه ای از اشیا که مفهوم و ماهیت آن عملیات به طور کلی ثابت است.

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

کاربرد• انجام دادن عملیات یکسان روی اشیای متفاوت

• نیازی به دسترسی فیلد های خصوصی برای انجام عملیات نباشد

ساختاردر زیر نمودار کلاس دیاگرام این الگو را مشاهده می کنیم.

Visitor Implementation - UML Class Diagram

اجزاVisitor: کلاسی که ساختار کلی ویزیتور ها را مشخص می کند.

Concrete Visitor: کلاسی که یک ویزیتور را پیاده سازی می کند.

Element: کلاسی که ساختار کلی اشیای را مشخص می کند. کلاسی که مشخص می کند برای دریافت یک ویزیتور چه چیزی را باید داشته باشیم.

Concrete Element: کلاس های اشیای موجود در این الگو هستند.

Object Structure: یک ساختار داده ای که شامل مجموعه ای از اشیای مختلف است.

پیامد1- این الگو صحبتی در باره ی چگونگی پیمایش اشیا موجود در ساختار را نمی کند

2- اگر پیمایش را خود ویزیتور انجام بدهد انتخاب مناسبی نیست. ولی این کار راObject Structure انجام دهد انتخاب مناسبی است.

نقات قوت:• جدا کردن عملیات قابل اجرا از کلاس ها باعث می شود کلاس ها سبک تر و نمونه سازی از آن ها سریع تر باشد.

• تعریف ویزیتور جدید ساده است.

• در زمان اجرا می توان ویزیتور ها را انتخاب و اجرا نمود.

نقاط ضعف:• از انجای که بخشی از کلاس را جدا در داخل کلاسی دیگر طراحی می کنیم. مجبور هستیم بخشی از کلاس را برای اشیای دیگر قابل مشاهده کنیم که این برخلاف قانون پنهان سازی است.

• بین کلاس های ویزیتور و Element وابستگی محکمی وجود دارد که البته این را نمی توان ضعف در نظر گرفت.

 آدرس این مقاله در وبسایت هیلتن:
🔗 http://heilton.com/Article/design-pattern/Visitor

کانال تلگرام گروه هیلتن😊👇

 JOiN → @HeiltonProgramming

Report Page