JavaRush /جاوا بلاگ /Random-UR /جاوا میں ریاست اور حکمت عملی کے نمونوں میں فرق
0xFF
سطح
Донецк

جاوا میں ریاست اور حکمت عملی کے نمونوں میں فرق

گروپ میں شائع ہوا۔
بنیادی جاوا ایپلی کیشنز میں ریاست اور حکمت عملی کے نمونوں کو صحیح طریقے سے استعمال کرنے کے لیے ، جاوا پروگرامرز کے لیے ان کے درمیان فرق کو واضح طور پر سمجھنا ضروری ہے۔ اگرچہ دونوں پیٹرن، اسٹیٹ اور اسٹریٹجی، ایک جیسی ساخت رکھتے ہیں، اور دونوں کھلے/بند اصول پر مبنی ہیں، جو ٹھوس اصولوں میں "O" کی نمائندگی کرتے ہیں، وہ ارادے میں بالکل مختلف ہیں ۔ جاوا میں حکمت عملی کاجاوا میں ریاست اور حکمت عملی کے نمونوں میں فرق - 1 نمونہ کلائنٹ کو عملدرآمد کی لچک فراہم کرنے کے لیے الگورتھم کے متعلقہ سیٹوں کو سمیٹنے کے لیے استعمال کیا جاتا ہے ۔ کلائنٹ اس کلاس کے سیاق و سباق کو تبدیل کیے بغیر رن ٹائم کے وقت کسی بھی الگورتھم کا انتخاب کر سکتا ہے جو . حکمت عملی پیٹرن کی کچھ مشہور مثالیں تحریری کوڈ ہیں جو الگورتھم استعمال کرتی ہیں، جیسے کہ خفیہ کاری، کمپریشن، یا چھانٹنا۔ دوسری طرف، ریاستی پیٹرن کسی چیز کو مختلف ریاستوں میں مختلف طریقے سے برتاؤ کرنے کی اجازت دیتا ہے۔ کیونکہ حقیقی دنیا میں کسی چیز کی اکثر ریاستیں ہوتی ہیں، اور یہ مختلف ریاستوں میں مختلف طریقے سے برتاؤ کرتی ہے، مثال کے طور پر، ایک وینڈنگ مشین صرف اس صورت میں سامان فروخت کرتی ہے جب وہ ریاست میں ہو ، یہ تب تک فروخت نہیں ہوتی جب تک کہ آپ اس میں سکہ نہ ڈالیں۔ اب آپ حکمت عملی اور ریاستی پیٹرن میں فرق واضح طور پر دیکھ سکتے ہیں، یہ مختلف ارادے ہیں۔ اسٹیٹ پیٹرن ایک آبجیکٹ کو ریاست کو منظم کرنے میں مدد کرتا ہے، جبکہ حکمت عملی پیٹرن کلائنٹ کو ایک مختلف طرز عمل کا انتخاب کرنے کی اجازت دیتا ہے۔ ایک اور فرق جو دیکھنا اتنا آسان نہیں ہے وہ یہ ہے کہ رویے میں تبدیلی کون چلا رہا ہے۔ اسٹریٹجی پیٹرن کے معاملے میں، یہ ایک کلائنٹ ہے جو سیاق و سباق کو مختلف حکمت عملی فراہم کرتا ہے؛ اسٹیٹ پیٹرن میں، منتقلی کو سیاق و سباق یا آبجیکٹ کی حالت کے ذریعے کنٹرول کیا جاتا ہے۔ مزید برآں، اگر آپ اسٹیٹ آبجیکٹ میں ریاستی تبدیلیوں کا خود انتظام کرتے ہیں، تو سیاق و سباق کا ایک حوالہ ہونا چاہیے، مثال کے طور پر، ایک وینڈنگ مشین کو سیاق و سباق کی موجودہ حالت کو تبدیل کرنے کے لیے ایک طریقہ کو کال کرنے کے قابل ہونا چاہیے۔ دوسری طرف، Strategy آبجیکٹ میں کبھی بھی سیاق و سباق کا حوالہ نہیں ہوتا؛ کلائنٹ خود اپنی پسند کی حکمت عملی کو سیاق و سباق میں منتقل کرتا ہے۔ ریاست اور حکمت عملی کے پیٹرن کے درمیان فرق جاوا پیٹرن کے بارے میں انٹرویو کے مقبول سوالات میں سے ایک ہے ، جاوا پیٹرن پر اس مضمون میں ہم اس پر گہری نظر ڈالیں گے۔ ہم جاوا میں حکمت عملی اور ریاستی نمونوں کے درمیان کچھ مماثلتوں اور فرقوں کو تلاش کریں گے جو ان نمونوں کے بارے میں آپ کی سمجھ کو بہتر بنانے میں آپ کی مدد کریں گے۔ StrategyhasCoinsetState()

ریاست اور حکمت عملی کے نمونوں کے درمیان مماثلتیں۔

اگر آپ ریاست اور حکمت عملی کے نمونوں کے UML خاکے کو دیکھیں تو آپ دیکھیں گے کہ دونوں ایک دوسرے سے ملتے جلتے نظر آتے ہیں۔ Contextایک آبجیکٹ جو ریاست کو اپنے رویے کو تبدیل کرنے کے لیے استعمال کرتا ہے اسے -آبجیکٹ کے نام سے جانا جاتا ہے ، اسی طرح وہ شے جو اپنے طرز عمل کو تبدیل کرنے کے لیے حکمت عملی کا استعمال کرتی ہے اسے Context-آبجیکٹ کہا جاتا ہے۔ یاد رکھیں کہ کلائنٹ Context-object کے ساتھ تعامل کرتا ہے۔ اسٹیٹ پیٹرن کے معاملے میں، سیاق و سباق ریاستی آبجیکٹ کو کال کرنے کے طریقوں کو سونپتا ہے، جسے موجودہ آبجیکٹ کے طور پر رکھا جاتا ہے، اور اسٹریٹجی پیٹرن کے معاملے میں، سیاق و سباق اسٹریٹجی آبجیکٹ کو پیرامیٹر کے طور پر استعمال کرتا ہے یا تخلیق کے دوران فراہم کیا جاتا ہے۔ اعتراض کا سیاق و سباق۔ جاوا میں اسٹیٹ پیٹرن کا UML ڈایاگرام جاوا میں ریاست اور حکمت عملی کے نمونوں میں فرق - 2 اسٹیٹ پیٹرن کے لیے یہ UML ڈایاگرام جاوا میں آبجیکٹ پر مبنی وینڈنگ مشین ڈیزائن بنانے کے کلاسک مسئلے کو ظاہر کرتا ہے۔ آپ دیکھ سکتے ہیں کہ وینڈنگ مشین کی حالت کو ایک انٹرفیس کا استعمال کرتے ہوئے دکھایا جاتا ہے، جس کے بعد مخصوص ریاست کی نمائندگی کے لیے عمل درآمد ہوتا ہے۔ ہر ریاست کے پاس آبجیکٹ سیاق و سباق کا حوالہ بھی ہوتا ہے تاکہ سیاق و سباق میں بلائے گئے اعمال کے نتیجے میں دوسری ریاست میں منتقلی ہو۔ جاوا میں اسٹریٹجی پیٹرن کا UML ڈایاگرام جاوا میں ریاست اور حکمت عملی کے نمونوں میں فرق - 3 اسٹریٹجی پیٹرن کے لیے یہ UML ڈایاگرام مختلف قسم کے فنکشنل نفاذ پر مشتمل ہے۔ چونکہ چھانٹنے والے بہت سے الگورتھم ہیں، یہ ڈیزائن پیٹرن کلائنٹ کو اشیاء کو چھانٹتے وقت الگورتھم کا انتخاب کرنے کی اجازت دیتا ہے۔ درحقیقت، جاوا کلیکشن فریم ورک اس پیٹرن کو اس طریقہ کار کو نافذ کرنے کے لیے استعمال کرتا ہے Collections.sort()جو جاوا میں اشیاء کو ترتیب دینے کے لیے استعمال ہوتا ہے۔ فرق صرف یہ ہے کہ کلائنٹ کو چھانٹنے والے الگورتھم کو منتخب کرنے کی اجازت دینے کے بجائے، یہ جاوا کو Comparator یا Comparable انٹرفیس کی مثال دے کر موازنہ کی حکمت عملی کی وضاحت کرنے کی اجازت دیتا ہے ۔ آئیے جاوا میں ان دو بڑے ڈیزائن پیٹرن کے درمیان کچھ مماثلتوں کو دیکھتے ہیں:
  1. دونوں پیٹرن، ریاست اور حکمت عملی، اس چیز کے سیاق و سباق کو متاثر کیے بغیر نئی حالت اور حکمت عملی کو شامل کرنا آسان بناتے ہیں جو انہیں استعمال کرتی ہے۔

  2. یہ دونوں آپ کے کوڈ کو کھلے/بند اصول کے مطابق برقرار رکھتے ہیں ، یعنی ڈیزائن ایکسٹینشن کے لیے کھلا ہوگا لیکن ترمیم کے لیے بند ہوگا۔ ریاست اور حکمت عملی کے نمونوں کے معاملے میں، آبجیکٹ کا سیاق و سباق ترمیم، نئی ریاستوں یا نئی حکمت عملیوں کے تعارف کے لیے بند ہے، یا آپ کو دوسری ریاست کے سیاق و سباق، یا کم سے کم تبدیلیوں کی ضرورت نہیں ہے۔

  3. جس طرح کسی آبجیکٹ کا سیاق و سباق اسٹیٹ پیٹرن میں آبجیکٹ کی ابتدائی حالت سے شروع ہوتا ہے، اسی طرح جاوا میں اسٹریٹجی پیٹرن کے معاملے میں آبجیکٹ سیاق و سباق کی بھی ایک طے شدہ حکمت عملی ہوتی ہے۔

  4. اسٹیٹ پیٹرن مختلف آبجیکٹ اسٹیٹس کی شکل میں مختلف طرز عمل کی نمائندگی کرتا ہے، جبکہ اسٹریٹجی پیٹرن مختلف آبجیکٹ اسٹریٹجیز کی شکل میں مختلف طرز عمل کی نمائندگی کرتا ہے۔

  5. دونوں نمونے، حکمت عملی اور ریاست، رویے کے نفاذ کے ذیلی طبقات پر منحصر ہیں۔ ہر ٹھوس حکمت عملی ایک خلاصہ حکمت عملی کو بڑھاتی ہے؛ ہر ریاست ایک انٹرفیس یا تجریدی طبقے کا ذیلی طبقہ ہے جو ریاست کی نمائندگی کے لیے استعمال ہوتا ہے۔

جاوا میں حکمت عملی اور ریاستی نمونوں کے درمیان فرق

تو اب ہم جانتے ہیں کہ ریاست اور حکمت عملی کے نمونے ساخت میں ایک جیسے ہیں، لیکن ان کا ارادہ مختلف ہے۔ آئیے ان ڈیزائن پیٹرن کے درمیان کچھ اہم اختلافات کو دیکھیں۔
  1. سٹریٹیجی پیٹرن متعلقہ الگورتھم کے ایک سیٹ کو سمیٹتا ہے، اور کلائنٹ کو رن ٹائم میں کمپوزیشن اور ڈیلی گیشن کے باوجود قابل تبادلہ رویے استعمال کرنے کی اجازت دیتا ہے، دوسری طرف، اسٹیٹ پیٹرن کلاس کو مختلف ریاستوں میں مختلف طرز عمل کی نمائش میں مدد کرتا ہے۔

  2. ریاست اور حکمت عملی کے نمونوں کے درمیان اگلا فرق یہ ہے کہ ریاست کسی چیز کی حالت کو سمیٹتی ہے ، جبکہ حکمت عملی کا نمونہ الگورتھم یا حکمت عملی کو سمیٹتا ہے۔ چونکہ ریاست کسی شے کے ساتھ منسلک ہے اسے دوبارہ استعمال نہیں کیا جاسکتا، لیکن اس کے سیاق و سباق سے حکمت عملی یا الگورتھم کو ڈیکپل کرکے ہم اسے دوبارہ استعمال کرسکتے ہیں۔

  3. ریاستی طرز میں، ایک ذاتی ریاست ریاستوں کے درمیان منتقلی کو نافذ کرنے کے لیے سیاق و سباق کا حوالہ رکھتی ہے، لیکن حکمت عملی میں اس سیاق و سباق کا حوالہ نہیں ہوتا ہے جہاں اسے استعمال کیا جاتا ہے۔

  4. حکمت عملی کے نفاذ کو پیرامیٹر کے طور پر اس آبجیکٹ کو منتقل کیا جا سکتا ہے جو اسے استعمال کرے گا، مثال کے طور پر Collection.sort() ایک Comparator لیتا ہے جو کہ ایک حکمت عملی ہے۔ دوسری طرف، ریاست خود آبجیکٹ کے سیاق و سباق کا حصہ ہے، اور وقت کے ساتھ ساتھ آبجیکٹ کا سیاق و سباق ایک حالت سے دوسری حالت میں منتقل ہوتا ہے۔

  5. اگرچہ حکمت عملی اور ریاست دونوں کھلے/بند اصول کی پیروی کرتے ہیں، حکمت عملی واحد ذمہ داری کے اصول کی بھی پیروی کرتی ہے کیونکہ ہر حکمت عملی انفرادی الگورتھم پر مشتمل ہوتی ہے، مختلف حکمت عملی ایک دوسرے سے آزاد ہوتی ہیں۔ ایک حکمت عملی کو تبدیل کرنے کے لیے دوسری حکمت عملی کو تبدیل کرنے کی ضرورت نہیں ہے۔

  6. حکمت عملی اور ریاستی نمونوں کے درمیان ایک اور نظریاتی فرق یہ ہے کہ تخلیق کار آبجیکٹ کے "کیسے" حصے کی وضاحت کرتا ہے، جیسے "کس طرح" ترتیب دینے والا آبجیکٹ ڈیٹا کو ترتیب دیتا ہے، دوسری طرف، ریاستی پیٹرن "کیا" اور "کب" کی وضاحت کرتا ہے۔ آبجیکٹ کے حصے، مثال کے طور پر جب کوئی چیز کسی خاص حالت میں ہو تو وہ کیا کر سکتی ہے۔

  7. ریاستی تبدیلیوں کی ترتیب ریاستی پیٹرن میں اچھی طرح سے بیان کی گئی ہے؛ حکمت عملی کے پیٹرن کے لیے ایسی کوئی ضرورت نہیں ہے۔ کلائنٹ اپنی پسند کی حکمت عملی کے کسی بھی نفاذ کا انتخاب کرنے کے لیے آزاد ہے۔

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

  9. ریاست اور حکمت عملی کے نمونوں کے درمیان آخری لیکن سب سے اہم فرق یہ ہے کہ حکمت عملی میں تبدیلی کلائنٹ کی طرف سے کی جاتی ہے، جب کہ ریاست میں تبدیلی سیاق و سباق یا آبجیکٹ کی حالت سے کی جا سکتی ہے۔

یہ سب جاوا میں ریاست اور حکمت عملی کے نمونوں کے درمیان فرق کے بارے میں ہے ۔ جیسا کہ میں نے کہا، دونوں اپنی کلاسوں اور UML ڈایاگرام میں ایک جیسے نظر آتے ہیں، دونوں کھلے/بند اصول فراہم کرتے ہیں اور رویے کو شامل کرتے ہیں۔ ایک الگورتھم یا حکمت عملی کو سمیٹنے کے لیے اسٹریٹجی پیٹرن کا استعمال کریں جو رن ٹائم کے وقت سیاق و سباق کے سامنے آتا ہے، شاید ایک پیرامیٹر یا کمپوزٹ آبجیکٹ کے طور پر، اور جاوا میں اسٹیٹ ٹرانزیشن کو کنٹرول کرنے کے لیے اسٹیٹ پیٹرن کا استعمال کریں۔ اصل یہاں
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION