یہ جاوا میں ڈیزائن کے نمونوں پر ایک مختصر مضمون ہے۔ کوئی پیٹرن نافذ نہیں ہوگا، صرف جاوا میں پیٹرن کی ایک فہرست کے ساتھ ہر ایک کی مختصر تفصیل۔ ان لوگوں کے لیے جو پہلے سے ہی اس موضوع سے واقف ہیں، یہ جائزہ اور خلاصہ کے طور پر مددگار ثابت ہوگا۔ اس کے برعکس، وہ لوگ جو پہلی بار پیٹرن کے بارے میں سیکھ رہے ہیں، گہرائی میں جانے سے پہلے موضوع کے ابتدائی جائزہ کے طور پر اس سے فائدہ اٹھائیں گے۔ جاوا میں ڈیزائن پیٹرن [حصہ 1] - 1 ڈیزائن پیٹرن پروگرامنگ کے اکثر کاموں کے لیے استعمال کے لیے تیار حل ہیں۔ یہ کوئی کلاس یا لائبریری نہیں ہے جسے کسی پروجیکٹ سے منسلک کیا جا سکے۔ یہ کچھ اور ہے۔ ہر کام کے لیے موزوں ڈیزائن پیٹرن ہر مخصوص معاملے میں لاگو ہوتے ہیں۔ آپ کو یاد رکھنا چاہیے کہ جب غلط طریقے سے یا کسی نامناسب کام پر لاگو ہوتا ہے، تو ڈیزائن کا نمونہ بہت سے مسائل پیدا کر سکتا ہے۔ تاہم، مناسب طریقے سے لاگو کردہ پیٹرن آپ کو آسانی اور آسانی سے کاموں کو مکمل کرنے میں مدد کر سکتا ہے۔

پیٹرن کی اقسام:

  • تخلیقی
  • ساختی
  • طرز عمل
تخلیقی نمونے ابتدائی میکانزم فراہم کرتے ہیں، جس سے آپ کو آسان طریقوں سے اشیاء بنانے کی اجازت ملتی ہے۔ ساختی نمونے کلاسوں اور اشیاء کے درمیان تعلقات کی وضاحت کرتے ہیں، انہیں ایک ساتھ کام کرنے کی اجازت دیتے ہیں۔ برتاؤ کے نمونے اداروں کے درمیان تعامل کو آسان بنانے کے لیے استعمال کیے جاتے ہیں۔

تخلیقی:

  • سنگلٹن — کلاس کی تخلیق کو کسی ایک مثال تک محدود کرتا ہے، اور اس واحد مثال تک رسائی فراہم کرتا ہے۔

  • فیکٹری — استعمال کیا جاتا ہے جب ہمارے پاس ایک سے زیادہ ذیلی طبقات کے ساتھ ایک سپر کلاس ہو اور ہمیں ان پٹ کی بنیاد پر ذیلی کلاس واپس کرنے کی ضرورت ہو۔

  • خلاصہ فیکٹری - فیکٹریاں بنانے کے لیے ایک سپر فیکٹری کا استعمال کرتی ہے، جسے ہم اشیاء بنانے کے لیے استعمال کرتے ہیں۔

  • بلڈر — سادہ اشیاء کا استعمال کرتے ہوئے پیچیدہ اشیاء بنانے کے لیے استعمال کیا جاتا ہے۔ یہ آہستہ آہستہ ایک چھوٹی، سادہ چیز سے ایک بڑی چیز بناتا ہے۔

  • پروٹوٹائپ — ڈپلیکیٹ اشیاء بناتے وقت کارکردگی کو بہتر بنانے میں مدد کرتا ہے۔ ایک نیا آبجیکٹ بنانے کے بجائے، یہ موجودہ آبجیکٹ کا کلون بناتا اور واپس کرتا ہے۔

ساختی:

  • اڈاپٹر - دو غیر مطابقت پذیر اشیاء کے درمیان کنورٹر۔ ہم دو متضاد انٹرفیس کو یکجا کرنے کے لیے اڈاپٹر پیٹرن استعمال کر سکتے ہیں۔

  • جامع - درخت کی ساخت کی نمائندگی کرنے کے لیے ایک کلاس کا استعمال کرتا ہے۔

  • پراکسی - دوسری کلاس کی فعالیت فراہم کرتا ہے۔

  • فلائی ویٹ — ایک جیسی اشیاء کی ایک بڑی تعداد بنانے کے بجائے اشیاء کو دوبارہ استعمال کرتا ہے۔

  • اگواڑا — ایک کلائنٹ کے لیے ایک سادہ انٹرفیس فراہم کرتا ہے، جو نظام کے ساتھ تعامل کے لیے انٹرفیس کا استعمال کرتا ہے۔

  • برج - مخصوص کلاسوں کو انٹرفیس کو نافذ کرنے والی کلاسوں سے آزاد بناتا ہے۔

  • ڈیکوریٹر - کسی موجودہ چیز کے ڈھانچے میں بندھے بغیر اس میں نئی ​​فعالیت شامل کرتا ہے۔

سلوک:

  • تمثیل کا طریقہ - ایک بنیادی الگورتھم کی وضاحت کرتا ہے اور اولاد کو اس کی مجموعی ساخت کو تبدیل کیے بغیر الگورتھم کے کچھ مراحل کو اوور رائیڈ کرنے کی اجازت دیتا ہے۔

  • ثالث - ایک درمیانی طبقہ فراہم کرتا ہے جو مختلف طبقات کے درمیان تمام مواصلات کو سنبھالتا ہے۔

  • ذمہ داری کا سلسلہ - درخواست بھیجنے اور وصول کرنے والے کے درمیان سخت انحصار سے بچنا ممکن بناتا ہے۔ مزید یہ کہ درخواست پر کئی اشیاء کے ذریعے کارروائی کی جا سکتی ہے۔

  • مبصر - ایک آبجیکٹ کو دوسری اشیاء میں پیش آنے والے واقعات کی نگرانی اور جواب دینے کی اجازت دیتا ہے۔

  • حکمت عملی - رن ٹائم میں حکمت عملیوں (الگورتھمز) کو تبدیل کرنے کی اجازت دیتی ہے۔

  • کمانڈ - ایک انٹرفیس جو کسی مخصوص عمل کو انجام دینے کے طریقہ کار کا اعلان کرتا ہے۔

  • ریاست - کسی چیز کو اس کی حالت کے لحاظ سے اپنے طرز عمل کو تبدیل کرنے کی اجازت دیتی ہے۔

  • وزیٹر - متعلقہ اشیاء کے گروپس پر آپریشن کو آسان بنانے کے لیے استعمال کیا جاتا ہے۔

  • مترجم - مسئلہ کے ڈومین میں ایک سادہ زبان کے لیے گرامر کی وضاحت کرتا ہے۔

  • Iterator — ترتیب وار کسی مجموعہ کے عناصر تک اس کی بنیادی شکل کو جانے بغیر رسائی حاصل کرتا ہے۔

  • یادداشت — کسی چیز کی حالت کو ذخیرہ کرنے کے لیے استعمال کیا جاتا ہے۔ اس حالت کو بعد میں بحال کیا جا سکتا ہے۔

جیسے ہی آپ CodeGym کورس سے گزریں گے، آپ کو اس فہرست میں کچھ نمونوں کا سامنا کرنا پڑے گا۔ میں پیٹرن کے بارے میں درج ذیل کاموں کی سفارش کرتا ہوں: 1522 , 1530 , 1631 , big01 , 2912 , 3107 ... ڈیزائن پیٹرن کا دانشمندانہ استعمال زیادہ قابل اعتماد کوڈ مینٹیننس کا باعث بنتا ہے، کیونکہ اس حقیقت کے علاوہ کہ ڈیزائن پیٹرن عام مسائل کا اچھا حل ہیں۔ ، دوسرے ڈویلپرز ان کو پہچان سکتے ہیں، مخصوص کوڈ کے ساتھ کام کرنے کے لیے درکار وقت کو کم کرتے ہیں۔