Table of Contents

تین کوارک تخلیقی کام کو سمجھ گیا ہے

سوفٹ ویئر ڈیزائن کے نمونے جنگ سے مربوط نیلے رنگ کے نیلے رنگ کے ہیں جو ڈیزائن کے مسائل کو حل کرنے کے لیے اکثر استعمال ہوتے ہیں۔ تخلیقی نمونے—سنگلٹن، فیکٹری اور پروتو ٹائپ – ہر قطب نما کس طرح سے مربوط ہوتا ہے

تنہا رہنا : اُن سب کی حکمرانی کا ایک اہم پہلو

تنہا طرزِعمل ایک کلاس کو بالکل ایک ہی مثال فراہم کرتا ہے اور اس پر عالمی رسائی کا نقطہ فراہم کرتا ہے ۔یہ ایک سادہ سی مثال ہے ،

تنہا کام

عام طور پر، ایک تنہان کلاس میں ایک نجی ترکیب اور ایک ایسے طریقہ کار کا حامل ہوتا ہے جو مثال واپس لے کر آتا ہے. پہلی بلاول (omb) پیدا کرتا ہے؛ بعد میں اسی مثال کو دوبارہ استعمال کرنا. کثیر التعداد ماحول میں، نسل کشی کو روکنے کے لیے ایسے حالات کی ضرورت ہوتی ہے جو کئی صورتوں میں پیدا کر سکیں۔

public class DatabaseConnectionPool {
 private static DatabaseConnectionPool instance;
 private DatabaseConnectionPool() { /* initialization */ }
 public static synchronized DatabaseConnectionPool getInstance() {
 if (instance == null) {
 instance = new DatabaseConnectionPool();
 }
 return instance;
 }
}

جب تنہا تنہائی کا شکار ہو جاتا ہے

  • مینگ شیئر وسائل : ایک اتصال پُل، ایک سروس یا ایک پریفیکچر مینیجر کو ایک ہی نقطہ پر کام کرنے سے فائدہ ہوتا ہے۔
  • Global state:] جب کسی درخواست گزار کیچ یا رجسٹریشن کو متفقہ رسائی کی ضرورت ہوتی ہے۔
  • ہارڈ ویئر یا OS-level وسائل : فائل سسٹمز، پرنٹ سفیر یا ونڈو مینیجر صرف ایک ہی صورت میں اجازت دیتے ہیں۔

اِس لئے ہمیں اُن سے کنارہ کرنا چاہئے ۔

  • اوورز: [FLT] کے لیے تنہا استعمال کرنا سب کچھ مخفی ٹماٹروں کو لے کر ایک یونٹ امتحان سخت کرنے کا باعث بنتا ہے کیونکہ آپ اس واقعے کو آسانی سے نہیں بدل سکتے۔
  • [Thread-Fortty settlection: کلاسیکی طرزِ عمل کو بوتل بنا سکتا ہے. متبادلات جیسے کہ شوق ابتدائی یا ڈبل کیچ بندی (claring) کے ساتھ بحث کم کر سکتے ہیں۔
  • Thort ulting: کیونکہ عالمی رسائی کا نقطہ مشکل ہے، کلائنٹ کو کو کویسٹن کلاس کے ساتھ ملا کر

اگر آپ کو واقعی ایک ہی اور عالمگیر قابلِ‌رسائی چیز کی ضرورت ہے تو پھر ذرا غور کریں کہ گورو کی تنہا ہدایت کو دوبارہ سے جاری کرنا ۔

پیداواری ترقی : مقصد کی تخلیق

فیکٹری کا طریقہ encassulates onculations on construction byly struction sympture, sublass کو یہ فیصلہ کرنے کی اجازت دیتا ہے کہ کس کلاس کو فوری طور پر کون سے رنگنے کا موقع مل سکتا ہے [Factry smation[1]] اور [ایک طریقہ جو نئی چیز کو واپس لے گا] اور [FLT2] plancy plancy plancy]] سے متعلقہ طور پر متعلقہ تمام اقسام کے طریقے کو ختم کرنے کے طریقے

تحقیق میں فیکٹری کا طریقہ

عناصر بنانے کے لیے بکثرت مفاہیم درست کریں لیکن زیریں کلاسز کو جو بنانے کی نوعیت تبدیل کریں گے تبدیل کریں۔ مثلاً ایک کلاس کے پاس . ذیلی کلاسز جیسے ونڈوز ڈیولوجی اور لینکس ڈیس ڈیلوگ نے اس طریقہ کو پلیٹ فارم بٹن واپس کرنے کے لیے دوبارہ طریقہ کار بنا دیا ہے۔

abstract class Dialog {
 abstract Button createButton();
 public void render() {
 Button okButton = createButton();
 okButton.onClick();
 }
}
class WindowsDialog extends Dialog {
 Button createButton() { return new WindowsButton(); }
}

یہ انداز مثالی ہے جب:

  • ایک کلاس اس کی تخلیق کرنے کیلئے ضروری چیزوں کی کلاس کو پہلے سے نہیں روک سکتی ۔
  • آپ کو چیز تخلیق منطق کو ایک جگہ پر اپلوڈ کرنا چاہتے ہیں.
  • نظام کو اس کی چیزوں کی تعمیر سے کیسے آزاد ہونا چاہئے ۔

کرپشن کی صنعت : متعلقہ مقاصد کے خاندان

فرض کریں کہ آپ کو ایک ایسے موضوع پر غور کرنا چاہیے جس کے تحت آپ کو کسی چیز کو حاصل کرنے کے لئے استعمال کریں ۔

اس نمونے کو ترجیح دی جاتی ہے جبکہ:

  • نظام کو مصنوعات کے ایک کثیر خاندانوں سے منسلک کرنا ضروری ہے۔
  • آپ مصنوعات میں مصنوعات کو نافذ کرنا چاہتے ہیں.
  • نئے پیداواری خاندانوں کو جدید کوڈ میں بہت سی تبدیلیاں لانے کی ضرورت ہے ۔

فیکٹری اور دیگر چیزوں کے درمیان فرق

فیکٹری آپ کا جانا ہے جب چیز تخلیق پیچیدہ ہے یا پھر آپ کو چلانے کے لئے تیز رفتار عمل کی ضرورت ہے. یہ تنہائی سے زیادہ ہے کیونکہ یہ صرف مرکزی تخلیقات کی تعداد محدود نہیں ہے.

تعمیر کی جگہ پر زیادہ‌تر عمارتیں بنانے کی بجائے کالونی

پریٹو ٹائپ کی نمونے سے نئی چیزیں بنائیں جس میں موجود چیز کی نقل کی جاتی ہے—The prototype. خاص طور پر قابل قدر ہے جب فوری معلومات (مثلاً بھاری ڈیٹابیس)، پیچیدہ عذاب (constrict) یا جب چیز کی حاملہ وقتی کمیت (tontins) ہوتی ہے تو آپ کو ایک پری (re-cons) کی صورت میں ڈھالنے کی بجائے اسے ضرورت ہوتی ہے اور اسے اس کی ضرورت کے طور پر الٹ دیتا ہے۔

کلونگ میکانکی: ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ;

اکثر پروگرامنگ زبانیں جاوا میں بنائی گئی ایک مصنوعی فون طریقہ (fLT:3 ، ، میں، یا جاوا اسکاپریپٹ میں پھیلانا ضروری ہے. تاہم، احتیاط سے اس کاپی کو ادا کرنا چاہیئے یا اس پر گہری (جس کے حوالہ جات کے لیے اوپر دئے گئے ہوں)،

class MazePrototype {
 public MazePrototype clone() throws CloneNotSupportedException {
 return (MazePrototype) super.clone(); // shallow copy
 }
}

پریٹو طرزِزندگی کیلئے تیارکردہ تجاویز

  • Costly object تخلیق : مثلاً فائل سے بڑا ڈھانچہ لوڈ کرنا یا پیچیدہ مس کو کھینچنا۔
  • حرکیہ (dynamic runme) چیزوں : جب نظام شمسی کو نئی چیزیں پیدا کرنی پڑیں جن کی اقسام وقت پر طے شدہ ہوتی ہیں (مثلاً دشمن کی اقسام جو پہلے سے طے شدہ ٹیمپلوں سے ٹکرا جاتی ہیں)۔
  • ریختہ ذیلی طبقاتی دھماکے : چھوٹی سی تبدیلی کے لیے بہت سے ذیلی کلاسیں بنانے کی بجائے آپ پروٹا ٹائپ کریں اور چند خصوصیات کو درست کریں.

پرتو ٹائپ رجسٹریشن اور کیچینگ

آپ رجسٹریشن کو عمل میں لانے کے لیے مزید ایک قدم لے سکتے ہیں—ایک مرکزی دکان جس میں سے پری سطح کے پرایپٹو ٹائپس کو کُل سے ملا کر

پہلوی-بی-سید کمشن: تنہائی، فیکٹری، پرتو ٹائپ

انتخاب کرنے میں آپ کی مدد کرنے کیلئے نیچے دی گئی میز کلیدی اختلافات کو نمایاں کرتی ہے :

PatternInstance CountCreation MechanismBest For
SingletonExactly oneSelf-managed global accessShared resources, global state
FactoryMultiple instances (or families)Centralized creation logicDecoupling client from concrete classes, complex creation
PrototypeMultiple instances cloned from a templateCloning (shallow/deep copy)Expensive instantiation, runtime object generation

جب غیرضروری یا عارضی دباؤ پیدا ہو جاتا ہے

  • Singleton + فیکٹری : ایک فیکٹری خود کو ایک تنہا (مثلاً ایک مصنوعی فیکٹری فی پلیٹ فارم) بن سکتی ہے. یہ عالمی رسائی کو مرکزی طور پر تشکیل دینے والی تخلیقات سے ملاتا ہے۔
  • Prototype + فیکٹری : ایک پرتو ٹائپ رجسٹر بطور فیکٹری کام کر سکتا ہے—آپ ایک بنانے کی بجائے ایک پروٹا ٹائپ کا کام کر سکتے ہیں. یہ کھیل میں خاص طور پر مفید ہے۔
  • Prototype + تنہائی : ایک پروٹا ٹائپ باسکٹ اس مفہوم میں ہو سکتا ہے کہ صرف ایک پروٹا ٹائپ مثال فی قسم موجود ہو، اگرچہ کلنز واحد نہیں ہیں۔

عملی فیصلہ خطرناک کام

جب آپ کو تخلیقی نمونے کی دعوت دینے والے ڈیزائنی مسئلے کا سامنا ہوتا ہے تو ان سوالات کو ترتیب سے پوچھیں:

  1. [ فٹ‌نوٹ :0 ] کیا مجھے پورے درخواست کی ضرورت ہے ؟ اگر جی‌ہاں تو تنہا رہنا چاہئے ۔ لیکن یقین رکھیں کہ پوری دُنیا میں ایک ایسی ریاست کی واقعی ضرورت ہے جو آزمائشی صورتحال سے دوچار نہیں ہوگی ۔
  2. کیا چیز تخلیق پیچیدہ یا امکان ہے؟ اگر جی ہو تو فیکٹری کا استعمال کرنا یا ابہام سازی کرنا ۔ یہ خاص طور پر اس وقت مفید ہے جب آپ بعد میں نئی چیز کو شامل کرنے کے لیے تیار ہوں گے.
  3. [1] کیا ایک نمائشی بوتل بنانے کا مقصد ہے، یا مجھے بہت سے ایسے واقعات کی ضرورت ہے جو صرف تھوڑا سا فرق کر سکتے ہیں؟ اگر ہاں، پریٹو ٹائپ ایک ٹیمپلنگ کر کے وقت اور یاد رکھ سکتے ہیں۔
  4. Chans زیادہ تر ایک ہی انداز کی خدمت کر رہا ہے ایک ہی مقصد کی خدمت کر رہا ہے Evaluate تجارتی-ofs. مثال کے طور پر، ایک فلیک ماڈل پروٹا ٹائپ کی بجائے یادداشت کو کم کر سکتا ہے اگر مقصد میں کمی ہو۔

انجینئری سافٹ ویئر میں حقیقی-world مثالیں

انجینئری ایپلیکیشنز اکثر ان نمونوں کو ملانے کے لیے ان اقدامات کو ملا سکتے ہیں۔A CAD سسٹم صارف ترجیحات مینیجر کے لیے تنہائی کا استعمال کر سکتا ہے، فیکٹری مختلف قسم کی ترجیحات بنانے کے لیے (crecle، پولیگن، اسپ لائن) اور پھر اسے تبدیل کرنے کے لیے پریٹو ٹائپنگ انجن مختلف حل شدہ عناصر، پرو ڈال سکتا ہے، اور پھر ان میں سے کسی بھی طرح کی نقل و حمل کے لیے settlection کے لیے پرو فا ئل استعمال کر سکتا ہے۔

غلط‌فہمی : اپنے ڈیزائن کو درست کرنے کی کوشش نہ کریں

تنہا ، فیکٹری اور پرتو ٹائپز کے لیے بنیادیں ہیں لیکن وہ چاندی کی گولیاں نہیں ہیں ۔ بہترین انتخاب آپ کے نظام کی رکاوٹوں کو سمجھنے سے پیدا ہوتا ہے : مثال کے طور پر کنٹرول کی ضرورت ، چیزوں کی ساخت کی پیچیدگی اور نئی چیزوں کی اہمیت کو ہمیشہ واضح اور واضح طور پر اہمیت دیتے رہیں ۔ جب شک میں ہو تو فیکٹری سے شروع کریں اور پھر اس کی جگہ پروکٹ یا پھر غیر مجازی طور پر اختیار کی جا سکے ۔

ان تینوں نمونوں کو ترتیب دینے سے آپ اپنے آپ کو ایک قابلِ‌رسائی اور پیچیدہ انجینئری سافٹ وئیر سے لیس کر سکتے ہیں ۔