در مطلب قبلی مربوط به این پست یعنی ۲۳ الگوی طراحی در جاوااسکریپت ، ما دو دسته از الگوهای طراحی را بررسی کردیم. در این مطلب داریم با آخرین دسته از الگوها «الگوهای رفتاری» آشنا شویم.
نکته: قبل از خواندن این مطلب نیاز است که دانش خوبی از برنامهنویسی شیگرا و مباحثی مانند کلاس abstract، ارثبری، رابطها، کپسولهسازی و... داشته باشید.
الگوهای رفتاری
این الگو شیوه تعامل شیءهای مختلف با همدیگر را تشریح میکند. این الگو شامل موارد زیر میشود:
- الگوی زنجیره وظایف -Chain of responsibility pattern-
- الگوی فرمان -Command pattern-
- الگوی مفسر -Interpreter pattern-
- الگوی تکرار -Iterator pattern-
- الگوی واسط -Mediator pattern-
- الگوی نشانه -Memento pattern-
- الگوی مشاهده کننده -Observer pattern-
- الگوی وضعیت -State pattern-
- الگوی استراتژی -Strategy pattern-
- الگوی متد قالب -Template method pattern-
- الگوی بازدیدکننده -Visitor pattern-
الگوی طراحی زنجیره وظایف جاوااسکریپت
این الگو حاوی زنجیرهای از شیءها است که برای حل یک مشکل استفاده میشود. به این صورت که ابتدا شیء اول آزمایش میشود، اگر موفق بود که عملیات به پایان میرسد در غیر اینصورت به شیء دیگر زنجیره میرود و این روند تا عملیات موفق نشود تمام نمیشود.
در این الگو یک زنجیره از اشیاء دریافت کننده برای یک درخواست ایجاد میشود. در این الگو هر دریافت کننده شامل یک آدرس به دریافت کننده دیگر است.
اگر یک دریافت کننده نتواند درخواست را مدیریت کند درخواست به دریافت کننده دیگر فرستاده میشود.
الگوی طراحی فرمان جاوااسکریپت
تعریف اصلی این الگو بدین صورت است که در آن یک شیء وجود دارد که تمام اطلاعات مورد نیاز برای فراخوانی یک متد را نمایش و کپوسلهسازی میکند.
اطلاعات شامل نام متد، شیء حاوی متد و مقدار مربوط به پارامترهاست.
الگوی طراحی مفسر جاوااسکریپت
عمدتا از این الگو در هیچ پروژهای استفاده نشده اما استفاده از آن میتواند بسیار مفید باشد. زمانی که این الگو با تکنیک Reflection مربوط به جاوااسکریپت ادغام شود، نقش اصلی خود را نشان میدهد. از این الگو برای تبدیل کردن دادههای مختلف در یک بلاک به دادههای دیگر استفاده میشود.
الگوی طراحی تکرار جاوااسکریپت
الگوی تکرار به شما این قابلیت را میدهد که بتوانید از یک مسیر به انواع مختلف مجموعهها در یک شیء دسترسی داشته باشید. برای مثال وقتی شما با یک Array, ArrayList و HashTable کار میکنید، آنها شامل شیءهای مشابهی هستند که میشود از آنها به یک صورت استفاده کرد و به یک صورت رفتار نمود.
کاری که این الگو در این حالت انجام می دهد این است که یک راه ثابت را برای دسترسی داشتن به نوعهای مختلف مجموعه فراهم میکند.
براساس همین الگو شما میتوانید کدهای چندریختی بنویسید. شما میتوانید به هر مجموعه از اشیا دسترسی داشته باشید به این دلیل که پیادهسازی آنها به یک شکل خواهد بود.
الگوی طراحی واسط جاوااسکریپت
از این الگو برای مدیریت ارتباط میان شیءهای مرتبط به هم استفاده میشود. تمام ارتباطات توسط واسط مدیریت میشود. بنابراین طرفین نیازی ندارند که در رابطه با همدیگر چیزی بدانند.
الگوی طراحی نشانه جاوااسکریپت
این الگو راهی برای ذخیره وضعیتهای قبلی یک شیء است. ابتدای کار شما باید شیءای که قرار است وضعیتهای آن را ذخیره کنید را انتخاب نمایید. منظور از وضعیت داشتن فیلدهای مختلف همراه با مقادیر متفاوت است.
بعد از آن شما باید متدسازنده را ایجاد کنید که مقادیر Get و Set شیء مورد نظر را دریافت کرده و بعد دادهها را به آن اعمال کنید.
بعد از این حالت شما یک ArrayList دارید که موقعیت های متفاوت شیء را در خود قرار داده میتوانید از آنها استفاده کنید.
الگوی طراحی مشاهده کننده جاوااسکریپت
وقتی که میخواهید از تغییرات مربوط به یک شیء در اشیاء دیگر خبردار شوید، این الگو به کمک شما میآید.
مثال: فرض کنید ما یک شیء موضوع یا منتشر کننده داریم که قرار است هزاران محصول دسته دوم را در خود قرار داده و نمایش بدهد. زمانی که شما بخواهید اطلاعات تغییر داده شده در این شیء را به چندین مشتری یا خریدار بفرستید باید از الگوی طراحی مشاهده کننده استفاده کنید.
الگوی طراحی وضعیت جاوااسکریپت
این الگو اجازه میدهد زمانی که وضعیت داخلی تغییر میکند رفتار یک شیء تغییر کرده و به همین صورت در رفتار کلاس نیز تغییر بوجود بیاید. در این حالت شما با سه قسمت اصلی باید تعامل داشته باشید:
اول، شما باید محتوا یا حسابی را برای نگهداری وضعیت کنونی یک نمونه در دسترس داشته باشید.
بعد از آن شما باید یک رابط را برای کپسولهسازی رفتاری که در وضعیت محتوای کنونی است در اختیار داشته باشید.
در نهایت شما باید یک وضعیت اصلی برای هر زیر کلاس داشته باشید که براساس وضعیت کنونی، یک رفتار را ایجاد میکند.
الگوی طراحی استراتژی جاوااسکریپت
شما از الگوی استراتژی زمانی استفاده میکنید که بخواهید یک کلاس همراه با رفتاری مشابه با رفتارهای موجود را ایجاد کنید.
الگوی طراحی متد قالب جاوااسکریپت
درک کردن این الگو کار ساده ای است. از این الگو برای ایجاد یک گروه از زیرکلاسها که برای اجرای گروه مشابهی از متدها استفاده میشود، بهره میگیریم. برای پیادهسازی این شما یک کلاس abstract ایجاد میکنید که شامل یک متد به نام متد قالب است.
متد دیگری نیز در این کلاس وجود خواهد داشت که برای فراخوانی متد قالب استفاده میشود.
الگوی طراحی بازدیدکننده جاوااسکریپت
این الگو به شما اجازه میدهد که متدهای مختلفی را به کلاسهایی با نوعهای متفاوت اضافه کنید. به هر حال آنها مجبور نیستند که نوعهای مختلفی داشته باشند اما این موضوع ممکن است کمی سطح پیچیدگی را افزایش دهد.
این الگو به شما اجازه میدهد که متدهای متفاوتی را براساس کلاس فراخوانی شده ایجاد نمایید.
برای مطالعه بیشتر و دقیقتر میتوانید این کتاب را مطالعه نمایید.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید