engeneer_19
14th April 2010, 10:53 PM
الگوهای طراحی در تولید نرمافزار چیستند و چه كاربردی دارند؟8->
الگوها توصیف كنندهی مسایل متواتری هستند كه در شرایط مشخصی روی میدهند. الگوها شامل راهحل پیشنهادی برای حل این مسایل نیز میباشند. علاوه بر این الگوهای طراحی نرمافزار میتوانند در مستندسازی طراحی انجام شده نیز كمك كنند تا تصویری كه در ذهنمان راجع به یك سیستم و یا زیر سیستم داریم در قالب مناسب بیان كنیم. افرادی كه میخواهند الگوهای ما را گسترش دهند یا پیادهسازی نمایند با مطالعهی الگوها دقیقا از دیدگاه ما نسبت به سیستم و مسأله آگاه میشوند.
علاوه بر این الگوهای طراحی پاسخگویی به انواع نیازمندیهای وظیفهمندی و غیر وظیفهمندی را میسر میسازند و به این ترتیب به یك طراحی خوب كمك میكنند. الگوها علاوه بر ارایهی راهكارهای مناسب برای دستیابی به نیازهای وظیفهمندی، توان پاسخ به نیازهای غیر وظیفهمندی مانند تغییرپذیری، آزمونپذیری و قابلیت نگهداری را نیز دارا هستند.
لازم است توجه شود كه الگوهای طراحی به حل مسأله كمك میكنند و لی راهحل كامل آنرا در اختیار ما نمیگذارند، از این جهت شبیه الگوهای لباس هستند كه شكل كلی از طراح را در اختیار ما میگذارند ولی برای استفاده مناسب از هر الگو لازم است طراحی با نوآوری و خلاقیت خود آن را در زمینهی مورد نیاز خود بدوزد.
بحث الگوها در مهندسی اولین بار در معماری ساختمانی مطرح شد، لكن اولین كسی كه از الگوها برای تولید نرمافزار كمك گرفت فردی به نام اریك گاما است كه در سال 1991 در تز دكترای خود به بحث و بررسی الگوها پرداخت. گاما به همراه سه نفر دیگر گروه GoF را تشكیل دادند و در كتابی الگوهای خود را توصیف كردند. این كتاب با استقبال عمومی مواجه شد و از آن پس الگوهای طراحی GoF شهرت بسیاری پیدا كرده، در گسترههای مختلف علم مهندسی نرمافزار به كار گرفته شدند.
كارایی و مقبولیت الگوهای طراحی GoF Design Pattern) GoF ) به حدی رسیده است كه امروزه ابزارهای حرفهای CASE بطور مستقیم از آنها پشتیبانی میكنند و امكان اعمال الگوهای طراحی GoF را فراهم میكنند. از جمله این ابزارها میتوان از Rational XDE ،Rational Rose و Borland Together نام برد.
الگوهای پایه GoF از لحاظ هدف به سه دسته تقسیم شدهاند :
1. الگوهای آفرینشی (Creational)
در فرآیندهای تولید اشیاء استفاده میشوند و عبارتند از : Factory Method، Builder، Prototype و Singleton
2. الگوهای ساختاری (Structural)
در تركیب كلاسها و اشیاء مورد استفاده قرار میگیرند و عبارتند از : Adapter، Bridge، Composite، Decorator، Facade، Flyweight و Proxy
3. الگوهای رفتاری (Behavioral)
چگونگی تعامل بین كلاسها یا اشیاء و نحوهی توزیع مسؤولیت بین آنها را مورد بحث قرار میدهند و عبارتند از : Chain of responsibility, Command, Interpreter, Iterator, Mediator,Memento, Observer, State, Strategy, Template method و Visitor
شخصاً در استفاده از الگوها آنها را بسیار كاربردی یافتهام كه هم در سرعت طراحی و هم در كیفیت آن میتواند بسیار مفید واقع شود.
الگوی شیء مرکب (Composite)
مقصود :
تشکیل ساختاری درختی به منظور نمایش سلسله مراتب کل-جزء اشیاء
به Client ها اجازه میدهد با اشیاء ساده و مرکب به شکل یکسان برخورد کنند.
انگیزه :
در برنامه های گرافیکی میتوان با ترکیب اجزای پایهای، اجزای مرکب ساخت
نیاز به مدل کردن اشیاء مرکب مانند اشیاء ساده
کاربرد :
وقتی میخواهیم سلسله مراتب کل-جزء اشیاء را نمایش دهیم
وقتی که میخواهیم مشتریها تفاوتی بین اشیاء ترکیبی و اشیاء بسیط احساس نکنند.
شرکت کنندگان :
• جزء (Component)
• برگ (Leaf)
• شیء مرکب (Composite)
• مشتری (Client)
همکاریها :
• مشتریها واسط کلاس Component را برای تعامل با اشیاء مرکب استفاده میکنند.
• اگر دریافت کننده یک برگ باشد، درخواست مستقیما پاسخ داده میشود.
• اگر دریافت کننده مرکب باشد، درخواست به فرزندان آن فرستاده میشود.
الگوها توصیف كنندهی مسایل متواتری هستند كه در شرایط مشخصی روی میدهند. الگوها شامل راهحل پیشنهادی برای حل این مسایل نیز میباشند. علاوه بر این الگوهای طراحی نرمافزار میتوانند در مستندسازی طراحی انجام شده نیز كمك كنند تا تصویری كه در ذهنمان راجع به یك سیستم و یا زیر سیستم داریم در قالب مناسب بیان كنیم. افرادی كه میخواهند الگوهای ما را گسترش دهند یا پیادهسازی نمایند با مطالعهی الگوها دقیقا از دیدگاه ما نسبت به سیستم و مسأله آگاه میشوند.
علاوه بر این الگوهای طراحی پاسخگویی به انواع نیازمندیهای وظیفهمندی و غیر وظیفهمندی را میسر میسازند و به این ترتیب به یك طراحی خوب كمك میكنند. الگوها علاوه بر ارایهی راهكارهای مناسب برای دستیابی به نیازهای وظیفهمندی، توان پاسخ به نیازهای غیر وظیفهمندی مانند تغییرپذیری، آزمونپذیری و قابلیت نگهداری را نیز دارا هستند.
لازم است توجه شود كه الگوهای طراحی به حل مسأله كمك میكنند و لی راهحل كامل آنرا در اختیار ما نمیگذارند، از این جهت شبیه الگوهای لباس هستند كه شكل كلی از طراح را در اختیار ما میگذارند ولی برای استفاده مناسب از هر الگو لازم است طراحی با نوآوری و خلاقیت خود آن را در زمینهی مورد نیاز خود بدوزد.
بحث الگوها در مهندسی اولین بار در معماری ساختمانی مطرح شد، لكن اولین كسی كه از الگوها برای تولید نرمافزار كمك گرفت فردی به نام اریك گاما است كه در سال 1991 در تز دكترای خود به بحث و بررسی الگوها پرداخت. گاما به همراه سه نفر دیگر گروه GoF را تشكیل دادند و در كتابی الگوهای خود را توصیف كردند. این كتاب با استقبال عمومی مواجه شد و از آن پس الگوهای طراحی GoF شهرت بسیاری پیدا كرده، در گسترههای مختلف علم مهندسی نرمافزار به كار گرفته شدند.
كارایی و مقبولیت الگوهای طراحی GoF Design Pattern) GoF ) به حدی رسیده است كه امروزه ابزارهای حرفهای CASE بطور مستقیم از آنها پشتیبانی میكنند و امكان اعمال الگوهای طراحی GoF را فراهم میكنند. از جمله این ابزارها میتوان از Rational XDE ،Rational Rose و Borland Together نام برد.
الگوهای پایه GoF از لحاظ هدف به سه دسته تقسیم شدهاند :
1. الگوهای آفرینشی (Creational)
در فرآیندهای تولید اشیاء استفاده میشوند و عبارتند از : Factory Method، Builder، Prototype و Singleton
2. الگوهای ساختاری (Structural)
در تركیب كلاسها و اشیاء مورد استفاده قرار میگیرند و عبارتند از : Adapter، Bridge، Composite، Decorator، Facade، Flyweight و Proxy
3. الگوهای رفتاری (Behavioral)
چگونگی تعامل بین كلاسها یا اشیاء و نحوهی توزیع مسؤولیت بین آنها را مورد بحث قرار میدهند و عبارتند از : Chain of responsibility, Command, Interpreter, Iterator, Mediator,Memento, Observer, State, Strategy, Template method و Visitor
شخصاً در استفاده از الگوها آنها را بسیار كاربردی یافتهام كه هم در سرعت طراحی و هم در كیفیت آن میتواند بسیار مفید واقع شود.
الگوی شیء مرکب (Composite)
مقصود :
تشکیل ساختاری درختی به منظور نمایش سلسله مراتب کل-جزء اشیاء
به Client ها اجازه میدهد با اشیاء ساده و مرکب به شکل یکسان برخورد کنند.
انگیزه :
در برنامه های گرافیکی میتوان با ترکیب اجزای پایهای، اجزای مرکب ساخت
نیاز به مدل کردن اشیاء مرکب مانند اشیاء ساده
کاربرد :
وقتی میخواهیم سلسله مراتب کل-جزء اشیاء را نمایش دهیم
وقتی که میخواهیم مشتریها تفاوتی بین اشیاء ترکیبی و اشیاء بسیط احساس نکنند.
شرکت کنندگان :
• جزء (Component)
• برگ (Leaf)
• شیء مرکب (Composite)
• مشتری (Client)
همکاریها :
• مشتریها واسط کلاس Component را برای تعامل با اشیاء مرکب استفاده میکنند.
• اگر دریافت کننده یک برگ باشد، درخواست مستقیما پاسخ داده میشود.
• اگر دریافت کننده مرکب باشد، درخواست به فرزندان آن فرستاده میشود.