If(GetManager()== Condition)
StopDisposing();
else
StartDisposing();
{
شکل۴-۴٫ اسکلت مشترک ترتیب فراخوانی دستورات الگوریتم شکل ۴-۳ در متد SetManager
استراتژی۲. آیا کاندیدهای استراتژی دارای یک ساختار منتزع- عملیاتی[۴۶] است؟ این معیار بجای محاسبه تعداد فرزندان استراتژی استفاده می­گردد. تعداد فرزندان استراتژی از یک تا چندین پیاده­سازی متغیر هستند. بنابراین بجای در نظر گرفتن تعداد فرزندان، وجود ساختار­ منتزع- عملیاتی (برای پیاده­سازی گونه­ های مختلف الگوریتم متد­ها باید رونویسی شوند، بنابراین وجود ساختار منتزع، الزامی است) را به عنوان معیار قرار می­دهیم.

(( اینجا فقط تکه ای از متن درج شده است. برای خرید متن کامل فایل پایان نامه با فرمت ورد می توانید به سایت feko.ir مراجعه نمایید و کلمه کلیدی مورد نظرتان را جستجو نمایید. ))

استراتژی۳. آیا رابط­ها با دسترسی عمومی، در استراتژی منتزع، بین همه استراتژی­ های عملیاتی رونویسی شده ­اند؟ لازم است که متدهای عمومی رونویسی شده بین استراتژی­ های وارث برای قابل تعویض ساختن آنها در یک ساختار فراخوانی ثابت، مشترک باشند. به عبارتی متد جدید با دسترسی عمومی نباید در یک استراتژی موجود باشد و در دیگری نباشد.
استراتژی ۴. آیا والد بین استراتژی و زمینه مشترک است؟ سلسله مراتب استراتژی و زمینه­ استفاده کننده از آن، باید از هم مستقل باشند. چون در غیر اینصورت زمینه نیز یک استراتژی است و باید حاوی مشخصات الگوریتمیک باشد و استقلال بین الگوریتم­ها و زمینه از بین می­رود.
استراتژی ۵. بررسی حضور خصیصه­ “حفظ فیلد” [۱۵,۴] در زمینه، به منظور اینکه کلاینت در هر لحظه­ای از اجرا بتواند بر حسب شرایط از یک استراتژی به استراتژی دیگر جابجا شود، حضور حداقل یک متد با دسترسی عمومی (به علاوه­ی متد سازنده) که استراتژی­ها را به شکل پارامتر از کلاینت بگیرد و جابجایی بین آنها را انجام دهد، لازم است. اگر این متد در زمینه­ استفاده کننده از استراتژی موجود نباشد مفهوم اصلی این الگو، قابلیت جابجا شدن الگوریتم­ها در زمان اجرا، حفظ نشده است.
استراتژی ۶. آیا همه­ رابط­هایی که از سمت زمینه­ استفاده کننده از استراتژی فراخوانی می­شوند، در کلیه­ استراتژی­ های عملیاتی موجود هستند؟ متد عمومی جدیدی که در یکی از استراتژیها تعریف شده ولی در دیگری موجود نباشد، نباید از سمت زمینه­ استفاده کننده از استراتژی مورد فراخوانی قرار گیرد. در غیر این صورت اصل جابجایی با یک فیلد مشترک را از بین می­برد. ما این فراخوانی را ‘فراخوانی خارج از محدوده’ می­نامیم.
۴-۲-۲٫ معیارهای تشخیص الگوی وضعیت
شکل۴-۵٫ الگوی وضعیت [۱]
گاهی نیازمند یک شی با چندین وضعیت هستیم، بطوریکه با حرکت از یک وضعیت به وضعیت دیگرش، رفتار مناسبی را از خود نشان دهد [۱]. همچنین می­خواهیم در یک زمینه­ خاص و در یک لحظه، تنها در یک وضعیت قرار گیرد و به راحتی وضعیتی اضافه یا حذف شود. الگوی وضعیت نیازمندیهای فوق را برآورده می­ کند. الگوی وضعیت ساختاری کاملا مشابه با الگوی استراتژی دارد و تنها در رفتار با الگوی استراتژی متفاوت می­ شود. این شباهت باعث شده که در خیلی از موقعیت­ها، ابزارهای خودکار شناسایی الگوهای طراحی، نتوانند الگوی وضعیت را از استراتژی تشخیص دهند. جابجایی بین کلاس­های مشخص­کننده­ وضعیت­ها یا به صورت داخلی و یا از خارج انجام می­گیرد. در واقع الگوی وضعیت به صورت آشکارا مشخص نمی­کند که در چه مکانی و چه زمانی تغییر وضعیت رخ می­دهد. بنابراین هر الگوی وضعیت می ­تواند تعدادی رابط را پیاده­سازی کند که به رابط­های کلاس وضعیت دیگر هیچ ارتباطی نداشته باشد. معیارهای متمایزکننده الگوی وضعیت از الگوی استراتژی در ادامه آمده است.
وضعیت ۱. تعداد استراتژی­ های عملیاتی (دلیل استفاده از واژه­ های استراتژی و زمینه در تمام معیارها این است که، این معیارها می­خواهند نمونه­های استراتژی را تصحیح برچسب کنند و ابزارها در خروجی­ خود، آدرس استراتژی و زمینه را داده­اند) که حاوی ایجاد نمونه ­ای از همزاد خود هستند بطوریکه، این نمونه­ها بعد از ایجاد در یک فیلد مشترک مستقر شده ­اند (یعنی بین آنها با دستورات شرطی جابجایی رخ داده است). گاهی زیرکلاس­های وضعیت همزادی از خود را ایجاد و وضعیت جانشین را به منظور جابجایی تعیین می­ کنند.
وضعیت ۲. تعداد نمونه­های استراتژی که در زمینه­ مورد استفاده ایجاد شده ­اند، بطوریکه این نمونه­ها در یک فیلد مشترک مستقر شده ­اند (یعنی بین آنها با دستورات شرطی جابجایی رخ داده است). گاهی زمینه مجموعه ­ای از وضعیت­ها را ایجاد و امکانی برای جابجایی آنها فراهم می­ کند.
وضعیت ۳. آیا زمینه استفاده­کننده از استراتژی خود را به عنوان پارامتر به استراتژی می­فرستد؟ ممکن است زمینه خود را به وضعیت ها بفرستد تا وضعیت­ها هنگام جابجایی، زمینه را مطلع کرده و سپس زمینه، جابجایی را با وضعیت ارسال شده از سوی وضعیت­ها انجام دهد.
وضعیت ۴. تعداد نمونه­های استراتژی که در زمینه ایجاد می­شوند و فیلد­ی که در آن قرار می­گیرند مشترک نیست. اگر دو استراتژی وارث، در یک زمان و در دو فیلد غیر مشترک در یک زمینه ایجاد شوند، در این صورت الگو مورد نظر نمی­تواند الگوی وضعیت باشد چون یک زمینه در هر زمان تنها می ­تواند در یک وضعیت قرار بگیرد.
وضعیت ۵. تعداد فراخوانی­هایی که از عملگرهای زمینه در استراتژی می­ شود. برای تنظیم وضعیت، زمینه از سمت وضعیت­ها ممکن است فراخوانی شود.
وضعیت ۶. آیا والد بین استراتژی و زمینه مشترک است؟ سلسله مراتب وضعیت و زمینه­ استفاده کننده از آن برای حفظ استقلال باید از هم جدا باشند.
۴-۲-۳٫ معیارهای تشخیص تطبیق دهنده شی
شکل۶-۴٫ الگوی تطبیق دهنده ی شی [۱]
هدف الگوی تطبیق دهنده، تبدیل رابطی از یک کلاس (تطبیق دهنده) به رابط کلاس دیگر (تطبیق یافته) است، آنطور که کلاینت انتظار دارد [۱]. این الگو امکانی را ایجاد می­ کند که کلاینت از وجود رابط کلاس دیگر در کلاس تطبیق دهنده باخبر نیست و فکر می­ کند که رابط کلاس تطبیق دهنده عملیات مورد نیازش را رفع می­ کند. درحالیکه رابط کلاس تطبیق یافته این کار را انجام می­دهد. این الگو منجر می­ شود تا کلاس­هایی که به دلیل رابط­های ناسازگار نمی توانستند با یکدیگر کار کنند بتوانند ارتباط برقرار کنند و با یکدیگر کار کنند بدون اینکه کلاینت متوجه شود. در برخی از موقعیت­ها ابزار­های خودکار شناسایی الگوهای طراحی، الگوی تطبیق­دهنده را با استراتژی اشتباه گرفته­اند. شباهت­های ساختاری این الگو با استراتژی بر اثر گسترش کلاس تطبیق دهنده و در نظر گرفته شدن تطبیق دهنده به عنوان زمینه و تطبیق یافته به عنوان استراتژی یا برعکس می­باشد. در ادامه معیارهایی برای جداسازی الگوی تطبیق­دهنده از الگوهای دیگر آمده است.
تطبیق دهنده شیء ۱. تعداد زیرکلاس­های استراتژی که، تعداد کل متد­های عمومی رونویسی شده حاوی فراخوانی به پارامتر سازنده­شان تقسیم بر تعداد کل متدهای عمومی حاوی فراخوانی به پارامتر سازنده­شان برابر با یک می­ شود. تطبیق یافته در متدهای رونویسی شده تطبیق دهنده باید مورد فراخوانی قرار بگیرد نه در متد جدید ناشناس. چون کلاینت انتظار دارد متدهای کلاس منتزع تطبیق دهنده عملیات مورد نظرش را فراهم کنند و انتظار رابط جدید و ناشناخته را ندارد. در نتیجه این معیار تشخیص می­دهد که آیا تطبیق یافته در متد عمومی جدید در تطبیق دهنده فراخوانی شده است یا نه؟ مقدار یک به این معنی است که هیچ متد جدیدی تعریف نشده است که حاوی فراخوانی تطبیق یافته باشد. متد عمومی در نظر گرفته شده است چون متد شخصی یا قابل ارث بری مستقیما از بیرون قابل فراخوانی نیست.
*[۴۷]تطبیق دهنده ی شیء ۲٫
تعداد زیرکلاس­های مستقیم و غیرمستقیمی که حاوی فراخوانی به پارامتر سازنده در متد رونویسی شده عمومی هستند. در الگوی تطبیق دهنده همه یا اکثر زیرکلاس­های گسترش یافته، تطبیق یافته را به عنوان پارامتری از سازنده می­گیرند.
تطبیق دهنده ی شیء ۳.
آیا والد بین استراتژی و زمینه مشترک است؟ تطبیق دهنده و تطبیق یافته نمی ­توانند از یک والد مشترک گسترش یافته باشند. ( در الگوی تطبیق دهنده شی )
تطبیق دهنده ی شیء ۴.
تعیین موجود بودن ساختار منتزع- عملیاتی در ساختار زمینه. اگر زمینه استفاده کننده از استراتژی یک تطبیق دهنده باشد، برای تطبیق یافتن با رابط های جدید نیاز به رونویسی شدن دارد. پس باید در یک ساختار منتزع- عملیاتی واقع شده باشد.
۴-۲-۴٫ معیارهای تشخیص کارخانه انتزاعی
شکل ۴-۷٫ الگوی طراحی کارخانه انتزاعی [۱]
اگر مجموعه­­ای از اشیا را داشته باشیم که به سبک­های مختلف قابل تولید­ شدن باشند، هنگام جابجایی از یک سبک به سبک دیگر، چه باید کرد؟ باید از هزاران شی به هزاران شی (از همان نوع اما با سبک متفاوت)، جابجا شویم؟ الگوی کارخانه انتزاعی این امکان را می­دهد که در چنین مواقعی تنها با جابجایی یک شی، از یک سبک به سبک دیگر جابجا شویم. هدف این الگو ایجاد یک رابط برای تولید خانواده­ای از اشیا مرتبط یا وابسته، بدون معین­ کردن کلاس عملیاتیشان است [۱].
حتی با مقایسه­ تعریف دو الگوی کارخانه انتزاعی و استراتژی، شباهت­های موجود در پیاده­سازی و عملکرد آنها مشخص است. الگوی استراتژی امکان جابجایی بین خانواده­ای از الگوریتم­ها را در یک زمینه­ خاص فراهم می­ کند، درحالیکه کارخانه انتزاعی نیز، امکان جابجایی بین استانداردهای مختلف تولید مجموعه ­ای از اشیا را در یک زمینه خاص فراهم می­سازد. برای فراهم­سازی این جابجایی در یک زمینه خاص نیازمند چارچوب مشترک ذکر شده در بخش استراتژی و ساختار فراخوانی ثابت هستیم.
معیارهای متمایزکننده­ الگوی کارخانه­ ­انتزاعی به جهت مشخص کردن هدف هر عملکرد و ساختار مشابه (الزام حضور رابط­های مشترک برای جابجایی خانواده­ای از اشیاء در یک مکان مشترک) با الگوی استراتژی در زیر آمده­اند.
کارخانه­ انتزاعی ۱. تعداد متدهای عمومی که بین تمام استراتژی­ های وارث، رونویسی شده ­اند. متدهای عمومی رونویسی شده باید در تمام تولید­کننده­ها مشترک باشند (به منظور ایجاد قابلیت جابجایی بین استاندارد­های موجود، در یک زمینه خاص با ساختار فراخوانی ثابت).
کارخانه انتزاعی ۲. کمترین تعداد متدهای رونویسی شده­ عمومی که شی جدیدی را ایجاد و بر می­گردانند (بین کلاس­های وارث استراتژی) بدون اینکه پیاده­سازی­­ای را در بر ­بگیرند. هر تولید­کننده عملی در کارخانه انتزاعی، تنها برای تولید مجموعه ­ای از اشیا مرتبط یا وابسته استفاده می­ شود و پیاده­سازی دیگری را در بر ندارند. “کمترین” استفاده می­ شود چون، همه­ زیر­کلاس­های تولید­کننده باید رابط­های که اشیایی را بر می­گردانند و هیچ پیاده­سازی­ای ندارند، داشته باشند. مقدار این معیار باید برابر با تعداد متدهای رونویسی شده مشترک بین همه تولید کننده­ها باشد.
۴-۲- ۵٫ معیارهای تشخیص فرمان
شکل ۴-۸٫ الگوی طراحی فرمان [۱]
گاهی اوقات نیازمند آن هستیم که تقاضایی را به یک شی صادر کنیم بدون اینکه کلاینت صادر کننده تقاضا بداند که چه کسی و چگونه تقاضایش را بر طرف می­ کند. به عبارتی این الگو موجب پارامتری شدن صدور تقاضا به یک شی می­ شود [۱]. هدف الگوی فرمان در پوشینه قرار دادن هر تقاضا به شکل یک شی است. الگوی تطبیق­دهنده شی با الگوی فرمان از نظر ساختاری کاملا مشابه و تنها در رفتار و یک سری ویژگی­های داخلی متفاوت هستند. در این قسمت سعی بر آن است که این دو الگو را از هم و از الگو­های دیگر متمایز کنیم.
با توجه به شکل زیر شباهت ساختاری الگوی فرمان و تطبیق دهنده قابل مشاهده می­باشد.
شکل۴-۹٫ شباهت ساختاری الگوی فرمان و تطبیق دهنده شی [۱]
*فرمان۱٫ تعداد متدهای عمومی رونویسی شده مشترک بین همه استراتژی های عملیاتی. حداقل یک رابط برای گرفتن تقاضای کاربر به شکل پارامتر و مخفی کردن نحوه انجام فرمان­ها باید بین فرمان ها مشترک باشد.
فرمان۲. تعداد جفت کلاسهای منتزع- عملیاتی در ساختار زمینه که حاوی متدی با نام یا مترادف نام “run/execute” هستند. ممکن است ساختار زمینه الگوی فرمان باشد. (تحلیل معنایی) در اکثر نمونه­های واقعی از چنین نام­هایی استفاده می­ شود.
فرمان۳. تعداد جفت کلاسهای منتزع-عملیاتی در ساختار استراتژی که حاوی متدی با نام یا مترادف نام “run/execute” هستند. ممکن است ساختار استراتژی الگوی فرمان باشد. (تحلیل معنایی)

موضوعات: بدون موضوع  لینک ثابت


فرم در حال بارگذاری ...