نکات کلی در مورد الگوهای محبوب

ساخت وبلاگ

الگوهای طراحی: نمای کلی و پس زمینه

الگوهای طراحی چیست؟

در اینجا برخی از نویسندگان در مورد الگوهای طراحی گفته اند:

  • الگوها انتزاعی هایی را که بالاتر از سطح کلاس ها و نمونه های منفرد یا اجزا هستند، شناسایی و مشخص می کنند.[گاما، هلم، جانسون و ولیسایدز، 1993]
  • الگوهای طراحی راه حل های تکرار شونده ای برای مشکلات طراحی هستند که بارها و بارها می بینید.[آلپرت، براون و وولف، 1998]
  • یک الگوی طراحی توصیف می کند که چگونه اشیا بدون درگیر شدن در مدل ها و روش های داده های یکدیگر ارتباط برقرار می کنند.[کوپر، 2000]
  • الگوهای طراحی نرم افزار، توضیحات شماتیکی از راه حل های مشکلات تکراری در طراحی نرم افزار هستند.[جیا، 2003]
  • الگوی طراحی دستور العملی برای حل یک نوع معین از مشکل طراحی است که اشیاء سطح بالا، تعاملات و رفتارهای آنها را به تصویر می کشد.[وانگ، 2003]

تاریخچه مختصری از الگوهای طراحی و "باند چهار"

مفهوم الگوها (به طور کلی) در ابتدا توسط کریستوفر الکساندر و همکارانش در اواخر دهه 1970 بیان شد [The Timeless Way of Building, 1979; A Patte Language Towns, Buildings, Construction , 1977] (آنها 253 الگو داشتند.)

کمی بعد، مشخص شد که شباهت های زیادی بین طراحی نرم افزار و طراحی معماری وجود دارد:

  • هر دو فرآیندهای خلاقانه ای هستند که در یک فضای طراحی بزرگ، که شامل تمام طرح های ممکن است، آشکار می شوند.
  • طراحی به دست آمده باید نیازهای مشتری را برآورده کند.
  • طراحی به دست آمده باید برای مهندسی قابل اجرا باشد.
  • طراحان باید بسیاری از محدودیت ها و الزامات رقیب را برآورده کنند.
  • طراحان باید به دنبال ویژگی های ذاتی و در عین حال غیرقابل اندازه گیری باشند، مانند ظرافت و توسعه پذیری.

کارهای پیشگامانه در این منطقه توسط گروه موسوم به "باند چهار" انجام شد.[به متن اصلی آنها در مورد موضوع مراجعه کنید: الگوهای طراحی (عناصر نرم افزارهای شی گرا قابل استفاده مجدد)، اریش گاما، ریچارد هلم، رالف جانسون، جان ولیسیدز، 1995]

طراحی الگوهای پرفروش شد، اکنون به عنوان یک اثر "پیشگام" در نظر گرفته می شود، و بقیه تاریخ است: الگوهای طراحی به عنوان یک ابزار بسیار مفید توسط جامعه توسعه نرم افزار به طور کلی پذیرفته شده است.

بسیاری از الگوهای اضافی شناسایی و توصیف شده اند، و الگوهای بیشتری همیشه ظاهر می شوند.

به صورت بسیار کوچک با تعدادی از «نقش های طراحی مینی» آشنا هستید. یک الگوی بسیار کوچک در یک زبان برنامه نویسی گاهی اوقات اصطلاح نامیده می شود. آیا می توانید به نمونه ای فکر کنید؟

فرآیند یادگیری الگوی طراحی سه مرحله ای

  1. پذیرش - پذیرفته شدنبپذیرید که الگوهای طراحی در کار توسعه نرم افزار شما مهم هستند.
  2. به رسمیت شناختننیاز به خواندن و الگوهای طراحی "Watch for" را تشخیص دهید تا بدانید چه زمانی ممکن است از آنها استفاده کنید.
  3. درونی سازیسرانجام ، شما الگوهای را با جزئیات کافی که می دانید ("به طور غریزی"؟) "درونی می کنید؟) کدام یک (ها) ممکن است به شما در حل یک مشکل معین کمک کند.

23 الگوی طراحی اصلی (در سه دسته) (از الگوهای طراحی جاوا ، JW کوپر ، 2000)

الگوهای طراحی اساساً مستقل از زبان هستند ، اما اغلب با استفاده از smalltalk ، c ++ یا جاوا برای نشان دادن یا توضیح نحوه عملکرد این الگوی به روش حساس به زبان ارائه می شوند.

فرایند "جستجوی الگوهای" معدن الگوی نامیده می شود. الگوهای باید "به رسمیت شناخته شوند" یا "کشف شده" شوند ، و نمونه های جدید "در حال نمایش" هستند و به طور مداوم توصیف می شوند. 23 الگوی طراحی اصلی باند چهار اغلب در سه دسته زیر گروه بندی می شوند:

  • الگوهای خلاقیتاین گروه از الگوهای طراحی با روند ایجاد شیء سروکار دارد: آنها برای شما اشیاء ایجاد می کنند و به شما کمک می کنند تا از نیاز به فوری اشیاء به طور مستقیم خودداری کنید. برنامه شما در تصمیم گیری در مورد ایجاد اشیاء برای یک وضعیت معین ، انعطاف پذیری بیشتری کسب می کند.
    1. کارخانهاین الگوی طراحی بسته به داده های ارائه شده به آن ، نمونه ای از یکی از چندین کلاس ممکن را برمی گرداند.
    2. روش کارخانهاین الگوی طراحی یک کلاس تصمیم گیری ساده را ارائه می دهد که بسته به داده هایی که به آن ارائه شده است ، یکی از چندین زیر کلاس ممکن از یک کلاس پایه انتزاعی را برمی گرداند.
    3. کارخانه انتزاعیاین الگوی طراحی یک رابط برای ایجاد و بازگشت یکی از چندین خانواده اشیاء مرتبط فراهم می کند.
    4. مجریاین الگوی طراحی ، کلاس را نشان می دهد که ممکن است بیش از یک نمونه وجود نداشته باشد. بنابراین یک نقطه دسترسی به آن نمونه را فراهم می کند.
    5. سازندهاین الگوی طراحی ، ساخت یک شیء پیچیده را از بازنمایی آن جدا می کند ، به طوری که بسته به نیاز برنامه ، می توان چندین نمایش مختلف ایجاد کرد.
    6. نمونه اولیهاین الگوی طراحی با یک کلاس فوری شروع می شود ، که برای تهیه نمونه های جدید ، آن را کپی یا کلون می کند. این موارد پس از آن می توانند با استفاده از روشهای عمومی خود بیشتر تنظیم شوند.
  • الگوهای ساختاریاین گروه از الگوهای طراحی با ترکیب استاتیک و ساختار اشیاء و کلاس ها سروکار دارد: آنها به شما کمک می کنند گروه هایی از اشیاء را در ساختارهای بزرگتر مانند رابط های پیچیده کاربر و داده های حسابداری تشکیل دهید.
    1. آداپتوراین الگوی طراحی می تواند برای برنامه نویسی آسان تر یک رابط کلاس با دیگری مطابقت داشته باشد.
    2. پلاین الگوی طراحی رابط یک شی را از اجرای آن جدا می کند ، بنابراین می توانید آنها را به طور جداگانه تغییر دهید.
    3. کامپوزیتاین الگوی طراحی یک شی (ترکیبی از اشیاء) ایجاد می کند که هر یک از آنها ممکن است یک شیء ساده یا کامپوزیت باشد.
    4. تزیین کنندهاین الگوی طراحی به شما امکان می دهد مسئولیت هایی را به صورت پویا به اشیاء اضافه کنید.
    5. نمااین الگوی طراحی برای ساختن یک کلاس واحد از یک زیر سیستم کامل استفاده می شود.
    6. وزناین الگوی طراحی برای به اشتراک گذاری اشیاء استفاده می شود ، جایی که هر نمونه حاوی وضعیت خاص خود نیست ، اما آن را در خارج ذخیره می کند. این رویکرد به اشتراک گذاری کارآمد اشیاء اجازه می دهد تا در موارد بسیاری وجود داشته باشد ، اما فقط چند نوع مختلف وجود دارد.
    7. پروکسیاین الگوی طراحی یک شیء ساده ایجاد می کند که جای یک شیء پیچیده تر را می گیرد که بعداً مورد استفاده قرار می گیرد ، مانند زمانی که برنامه در یک محیط شبکه ای اجرا می شود.
  • الگوهای رفتاریاین گروه از الگوهای طراحی در درجه اول با تعامل پویا در بین کلاس ها و اشیاء سروکار دارد: آنها به شما کمک می کنند تا ارتباط بین اشیاء موجود در سیستم خود را تعریف کنید و چگونه جریان در یک برنامه پیچیده کنترل می شود.
    1. زنجیره مسئولیتاین الگوی طراحی اجازه می دهد تا با ارسال یک درخواست از یک شی به شیء دیگر در یک زنجیره ، تا زمان تشخیص درخواست ، بین اشیاء جدا شود.
    2. فرماناین الگوی طراحی از اشیاء ساده برای نشان دادن اجرای دستورات نرم افزاری استفاده می کند و به شما امکان می دهد تا از ورود به سیستم و دستورات غیرقابل توصیف پشتیبانی کنید.
    3. مترجماین الگوی طراحی تعریفی از نحوه گنجاندن عناصر زبان در یک برنامه ارائه می دهد.
    4. اشاره گراین الگوی طراحی نحوه حرکت ما از طریق لیستی از داده ها در یک کلاس را رسمی می کند.
    5. واسطه گراین الگوی طراحی چگونه می توان با استفاده از یک شی جداگانه ارتباط بین اشیاء را ساده کرد تا همه اشیاء را از آگاهی از یکدیگر دور نگه دارد.
    6. مشاهده کنندهاین الگوی طراحی چگونه می توان چندین اشیاء را از یک تغییر مطلع کرد.
    7. حالتاین الگوی طراحی به یک شی اجازه می دهد تا هنگام تغییر وضعیت داخلی ، رفتار خود را تغییر دهد.
    8. استراتژیاین الگوی طراحی یک الگوریتم را در یک کلاس محاصره می کند.
    9. روش الگویاین الگوی طراحی تعریف انتزاعی از یک الگوریتم را ارائه می دهد.
    10. بازدید کنندهاین الگوی طراحی توابع چند شکل را به یک کلاس غیر تهاجمی اضافه می کند.

سایر الگوهای طراحی

همانطور که در بالا اشاره کردیم، اکنون حداقل صدها و شاید هزاران الگوی طراحی توسط توسعه دهندگان نرم افزار استفاده می شود. بسیاری از آنها در موقعیت های بسیار خاص اعمال می شوند و در خارج از یک زمینه خاص تلاش چندانی ندارند. اما تعداد زیادی الگوی طراحی اضافی با کاربرد عمومی نیز وجود دارد. ممکن است هر از چندگاهی به فهرستی که در زیر ارائه می شود، اضافه کنیم، زیرا با الگوهای جدیدی مواجه می شویم که کاربرد یا علاقه خاصی دارند.

  • الگوهای معماریاین گروه از الگوهای طراحی با جفت شدن زیرسیستم های یک سیستم سر و کار دارند و تمایل به ترویج جفت شدن شل آن زیرسیستم ها دارند. بنابراین این الگوها نحوه تعامل این زیرسیستم ها با یکدیگر را مشخص می کنند.
  • Model-View-Controllerاین الگوی طراحی، داده های کاربردی (موجود در مدل) را از اجزای گرافیکی یا دیگر نمایش (نما) و منطق پردازش ورودی (کنترل کننده) جدا می کند.
  • لایه هایاین الگوی طراحی، عملکرد یک سیستم را به لایه های مختلف تقسیم می کند. هر لایه شامل مجموعه ای از مسئولیت های سیستم است و فقط به "خدمات" ارائه شده توسط لایه پایین بعدی بستگی دارد. ایده این است که یک طراح باید بتواند یک لایه را بدون نیاز به تغییر هیچ یک از لایه های دیگر اصلاح کند. یک مثال معمولی (و متداول) از این مدل به اصطلاح کاربردی سه لایه است که در آن
    • "Top Tier" یا "Client Tier" رابط کاربری برنامه است و ممکن است چیزی شبیه یک مرورگر وب باشد.
    • "سطح پایین" یا "سطح اطلاعات" اطلاعات را برای برنامه نگهداری می کند و معمولاً آنها را در نوعی پایگاه داده ذخیره می کند.
    • "سطح میانی" به عنوان یک واسطه بین لایه مشتری و ردیف اطلاعات عمل می کند. این لایه میانی درخواست های مشتری را پردازش می کند و بر اساس این درخواست ها، داده ها را از لایه اطلاعاتی می خواند و داده ها را در آن می نویسد. سپس لایه میانی داده ها را از لایه اطلاعات پردازش می کند و نتایج را به لایه مشتری ارائه می دهد.

    اجزای هر الگوی طراحی

    حداقل، هر الگوی طراحی باید موارد زیر را ارائه دهد:

    • نام الگو
    • الگوی "نیت" (توضیح مشکلی که الگوی طراحی برای حل آن در نظر گرفته شده است)
    • توضیح راه حل (احتمالاً همراه با کد و/یا مثال های استفاده)
    • شرحی از «پیامدها» (تصمیمات طراحی و مصالحه های انجام شده، که ممکن است در هنگام تصمیم گیری در مورد اینکه آیا این الگوی طراحی خاص اهداف طراحی کاربر را برآورده می کند یا خیر به کاربر کمک کند)

    طرح های دقیق تری وجود دارد. به عنوان مثال، Design Pattes از بخش های زیر در طرح توصیفی خود برای هر الگو استفاده می کند:

    • نام
    • قصد
    • همچنین به عنوان (اصطلاحات جایگزین) شناخته می شود
    • قابلیت کاربرد
    • ساختار (نمودار کلاس یا شی)
    • شركت كنندگان
    • همکاری ها
    • عواقب
    • پیاده سازی
    • کد نمونه
    • کاربردهای شناخته شده
    • الگوهای مرتبط
تجارت گزینه های دودویی در ایران...
ما را در سایت تجارت گزینه های دودویی در ایران دنبال می کنید

برچسب : نویسنده : زین‌العابدین مراغه‌ای بازدید : 28 تاريخ : دوشنبه 13 شهريور 1402 ساعت: 9:46