কৌশল প্যাটার্ন এবং একটি কমান্ড প্যাটার্ন ব্যবহার করে


121

উভয় নকশার নিদর্শনগুলি তাদের কলিং ক্লাসগুলি থেকে একটি অ্যালগরিদম এবং ডিকپل বাস্তবায়ন বিশদকে আবদ্ধ করে। আমি যে পার্থক্যটি বুঝতে পারি তা হ'ল কৌশল প্যাটার্ন কার্যকর করার জন্য প্যারামিটার নেয়, যখন কমান্ড প্যাটার্নটি তা দেয় না।

আমার কাছে মনে হয় কমান্ড প্যাটার্নটি তৈরি হওয়ার সময় মৃত্যুদন্ড কার্যকর করার জন্য সমস্ত তথ্য প্রয়োজন এবং এটি তার কলিংয়ে বিলম্ব করতে সক্ষম হয় (সম্ভবত কোনও স্ক্রিপ্টের অংশ হিসাবে)।

একটি নিদর্শন ব্যবহার করতে হবে বা অন্যটি কী তা নির্ধারণ করে?

উত্তর:


94

আমি এই দুটি প্যাটার্নের মধ্যে পার্থক্য ব্যাখ্যা করতে সহায়তা করতে GoF ডিজাইনের বিভিন্ন ধরণের একটি এনক্যাপসুলেশন হায়ারার্কি টেবিল অন্তর্ভুক্ত করছি। আশা করি এটি প্রতিটি encapsulates কি আরও ভাল চিত্রিত করে তাই আমার ব্যাখ্যা আরও অর্থবোধ করে।

প্রথমে, শ্রেণিবিন্যাসটি সেই সুযোগটি তালিকাভুক্ত করে যার জন্য একটি প্রদত্ত প্যাটার্ন প্রযোজ্য, বা আপনি যে টেবিলটি শুরু করবেন তার উপর নির্ভর করে কিছু স্তর বিশদভাবে সজ্জিত করতে উপযুক্ত প্যাটার্নটি ব্যবহার করুন।

নকশা প্যাটার্ন এনক্যাপসুলেশন হায়ারার্কি টেবিল

আপনি যেমন টেবিল থেকে দেখতে পাচ্ছেন, একটি কৌশল প্যাটার্ন অবজেক্ট কোনও অ্যালগরিদমের প্রয়োগের বিশদটি গোপন করে, তাই ভিন্ন কৌশল কৌশলটির ব্যবহার একই কার্যকারিতা সম্পাদন করবে তবে ভিন্নভাবে। প্রতিটি কৌশল অবজেক্ট কোনও নির্দিষ্ট ফ্যাক্টরের জন্য অনুকূলিত হতে পারে বা অন্য কোনও প্যারামিটারে চালিত হতে পারে; এবং, একটি সাধারণ ইন্টারফেস ব্যবহারের মাধ্যমে, প্রসঙ্গটি নিরাপদে কোনওটির সাথেই কাজ করতে পারে।

কমান্ড প্যাটার্নটি একটি অ্যালগরিদমের তুলনায় অনেক ছোট স্তরের বিশদটি সজ্জিত করে। এটি কোনও সামগ্রীতে একটি বার্তা প্রেরণের জন্য প্রয়োজনীয় বিশদগুলি এনকোড করে: রিসিভার, নির্বাচক এবং যুক্তি। প্রক্রিয়া প্রয়োগের যেমন একটি ক্ষুদ্র অংশ আপত্তিজনক উপকারিতা হ'ল এই বার্তাগুলি তার বিবরণগুলি হার্ড-কোড না করেই একটি সাধারণ উপায়ে সময় বা অবস্থানের বিভিন্ন বিন্দুতে আহ্বান করা যেতে পারে। এটি বার্তাগুলিকে এক বা একাধিকবার আহ্বান জানাতে বা সিস্টেমের বিভিন্ন অংশে বা একাধিক সিস্টেমে প্রেরণ করার অনুমতি দেয়, মৃত্যুদন্ড কার্যকর করার আগে নির্দিষ্ট অনুরোধের বিশদটি প্রয়োজন না করে।

নকশা নিদর্শনগুলির জন্য যেমন সাধারণ, তেমনি প্যাটার্নটির নামটি বহন করতে তাদের সমস্ত বাস্তবায়ন বিশদরূপে হওয়া প্রয়োজন হয় না। বিশদটি বাস্তবায়নের ক্ষেত্রে এবং পদ্ধতিতে যুক্তি হিসাবে বনামে কী ডেটা এনকোড করা আছে তাতে আলাদা হতে পারে।


সুতরাং যদি আমার কাছে এমন একটি সিস্টেম থাকে যা "ফিল্টার পাইপলাইন" দিয়ে ফলাফলগুলি ফিল্টার করে এবং প্রতিনিধিগুলিকে ফিল্টার হিসাবে ব্যবহার করে (যেখানে ফিল্টারটির প্রতিটি অ্যালগোরিদম কোনও ফাংশনের মধ্যেই এনপ্যাপুলেটেড হবে) তা কি কমান্ড প্যাটার্ন হিসাবে বিবেচিত হবে? এই ক্ষেত্রে আমি ফিল্টার ফাংশনটির জন্য প্রতিনিধিটিকে প্রতিটি ফিল্টারকে ইনপুট এবং আউটপুটের ক্ষেত্রে যা মেনে চলতে হবে তার জন্য বাছাইয়ের চুক্তি হিসাবে দেখছি।
কেটিএফ

4
@ কেটিএফ, না কমান্ড প্যাটার্ন একটি অবজেক্টকে নিয়োগ দেয় যা কোনও সামগ্রীর পদ্ধতিতে অনুরোধ করার জন্য প্রয়োজনীয় তথ্য (যেমন, রিসিভার, নির্বাচক, যুক্তি) সর্বাধিক (যদি সমস্ত না থাকে) থাকে। এটি একটি সরলতম প্যাটার্ন যা অন্য নকশার ধরণগুলিতে যেমন চেইন অফ দায়িত্বশীলতা, সংগ্রহ এবং আপনার বর্ণনা করা পাইপলাইন প্যাটার্নে ব্যবহার করা যেতে পারে। আপনার প্রতিনিধিদের দ্বারা সরবরাহিত "ধরণের চুক্তি" হ'ল ইন্টারফেস pattern
Huperniketes

50

কৌশলগুলি অ্যালগরিদমকে encapsulate করে। আদেশগুলি প্রেরককে একটি অনুরোধের প্রাপক থেকে পৃথক করে, তারা কোনও অনুরোধটিকে কোনও বস্তুতে পরিণত করে।

যদি এটি একটি অ্যালগরিদম হয় তবে কীভাবে কিছু করা হবে, কৌশল ব্যবহার করুন। আপনার যদি কোনও পদ্ধতির কলকে কার্যকর করার থেকে আলাদা করতে হয় তবে একটি কমান্ড ব্যবহার করুন। কমান্ডগুলি প্রায়শই ব্যবহৃত হয় যখন আপনি কোনও ব্যবহার বা লেনদেনের মতো পরবর্তী ব্যবহারের জন্য বার্তাগুলি সারি করেন।


তৈরি অর্থে যে en.wikipedia.org/wiki/Command_Pattern ক্লায়েন্ট এবং invoker সংযুক্ত করা হয়, কিন্তু একই সময়ে, তারা একে অপরের সম্পর্কে জানতে না!
কল্পনা সনি

26

খুব পুরানো প্রশ্নের উত্তর দিচ্ছি। (সর্বাধিক ভোটদানের পরিবর্তে কেউ কি সর্বশেষ উত্তর দেখছে?)

সাদৃশ্যগুলির কারণে এটি থাকা একটি বৈধ বিভ্রান্তি। কৌশল এবং কমান্ড উভয় ধরণের এনক্যাপসুলেশন ব্যবহার করে । কিন্তু এটি তাদের একই করে না।

কী পার্থক্য বুঝতে হয় কি encapsulated করা হয়। ওও নীতি, উভয় নিদর্শন নির্ভর করে, যা পরিবর্তিত হয় তা এনক্যাপসুলেট

কৌশল ক্ষেত্রে, কি পরিবর্তিত হয় তা হল অ্যালগরিদম । উদাহরণস্বরূপ, একটি কৌশল অবজেক্ট এক্সএমএল ফাইলের আউটপুট কীভাবে জানে, অন্যটি জেএসওএনকে বলে, বিভিন্ন ক্লাসে বিভিন্ন অ্যালগরিদম রাখা হয় ( এনক্যাপসুলেটেড )। এটা যে হিসাবে হিসাবে সহজ।

কমান্ডের ক্ষেত্রে, যা পরিবর্তিত হয় তা হ'ল অনুরোধটি itself অনুরোধ থেকে আসতে পারে File Menu > Deleteবা Right Click > Context Menu > Deleteবা Just Delete Button pressed। তিনটি ক্ষেত্রেই একই ধরণের 3 টি কমান্ড অবজেক্ট তৈরি করা যায়। এই কমান্ড অবজেক্টগুলি মুছে ফেলার জন্য কেবল তিনটি অনুরোধ উপস্থাপন করে; অ্যালগরিদম মুছে ফেলা হয় না। যেহেতু অনুরোধগুলি এখন অবজেক্টগুলির গুচ্ছ তাই আমরা সেগুলি সহজেই পরিচালনা করতে পারি। হঠাৎ করে পূর্বাবস্থায় ফেরানো বা পুনরায় করার মতো কার্যকারিতা সরবরাহ করা তুচ্ছ হয়ে যায়।

কমান্ড কীভাবে অনুরোধ করা যুক্তি প্রয়োগ করে তা বিবেচ্য নয়। এক্সিকিউট () কল করার সময়, এটি মুছে ফেলার ট্রিগার করতে একটি অ্যালগরিদম প্রয়োগ করতে পারে বা এটি এটি অন্য অবজেক্টগুলিতে এমনকি এটি কোনও কৌশলতেও অর্পণ করতে পারে। এটি কেবল কমান্ড প্যাটার্নের বাস্তবায়ন বিশদ। এটি অনুরোধ করার ভদ্র উপায় না হলেও এটি কমান্ড হিসাবে নামকরণ করা হয়েছে : -)

কৌশলের সাথে এটি বৈসাদৃশ্য করুন; এই প্যাটার্নটি কেবলমাত্র বাস্তব যুক্তি দিয়েই সম্পর্কিত যা সম্পাদিত হয়। যদি আমরা এটি করি, এটি ক্লাসের ন্যূনতম সেট সহ আচরণের বিভিন্ন সংমিশ্রণ অর্জনে সহায়তা করে, সুতরাং শ্রেণি বিস্ফোরণ রোধ করে।

আমি মনে করি, কমান্ড আমাদের এনক্যাপসুলেশন সম্পর্কে আমাদের উপলব্ধি প্রসারিত করতে সহায়তা করে যখন কৌশল এনক্যাপসুলেশন এবং পলিমারফিজমের প্রাকৃতিক ব্যবহার সরবরাহ করে।


15

যেভাবে আমি এটি দেখছি তা হ'ল আপনার একই কাজ করার একাধিক উপায় রয়েছে, সেগুলির প্রত্যেকটি একটি কৌশল এবং রানটাইমের সময় কোনওটি নির্ধারণ করে যে কোন কৌশলটি কার্যকর হয়।

প্রথমে স্ট্র্যাটেজিওনে চেষ্টা করুন, ফলাফলগুলি যদি ভাল না হয় তবে কৌশল দুটি চেষ্টা করুন ...

কমান্ডগুলি পৃথক বিষয়গুলির সাথে আবদ্ধ হয় যা ট্রাইটোওয়ালকঅক্রস দ্য রুমকমান্ডের মতো হওয়ার দরকার। যখনই কোনও বিষয় ঘরের উপর দিয়ে হাঁটার চেষ্টা করবে তখনই এই কমান্ডটি বরখাস্ত করা হবে, তবে এর অভ্যন্তরে, ঘরটি জুড়ে চলার চেষ্টা করার জন্য এটি কৌশল কৌশল এবং কৌশল কৌশল দুটি চেষ্টা করতে পারে।

ছাপ


2
আর: "একই জিনিস করার একাধিক উপায়" - কৌশলটির সাধারণ কয়েকটি উদাহরণের সাথে এটি বিরোধী বলে মনে হচ্ছে। বিশেষত যেখানে বাস্তবায়ন ক্লাস রয়েছে সেখানে সংযোজন, বিয়োগ, গুণ ইত্যাদি ইত্যাদি সম্ভবত সেগুলি ভাল উদাহরণ নয়?
জোশুয়া ডেভিস

1
@ জোশুয়া ডেভিস এই সমস্ত "সাবস্ট্রাট্যাজি" একটি কৌশলের বিশেষ ক্ষেত্রে: গাণিতিক অপারেশন । তাদের সাধারণ যুক্তি রয়েছে (২ টি অপারেন্ডস) এবং ফলস্বরূপ একটি মান উত্পাদন করে। বাস্তবায়নের উপর নির্ভর করে খুব আলাদাভাবে একই জিনিস (ব্ল্যাকবক্স হ'ল) ​​তাদের নিজস্ব উপায়ে করা। সুতরাং আমি এখানে কোনও বিরোধ দেখছি না, তবে একেবারে বিপরীত: চমৎকার উদাহরণ =)
জঙ্গল_মোল

7

আমি আমার মতে ভুল হতে পারি, তবে আমি কমান্ডটিকে ফাংশন-টু-এক্সিকিউটেড বা প্রতিক্রিয়া হিসাবে গণ্য করি । কমপক্ষে দু'জন খেলোয়াড় থাকা উচিত: যিনি ক্রিয়াকলাপের জন্য অনুরোধ করেন, এবং যিনি ক্রিয়াকলাপ সম্পাদন করেন। জিইউআই হ'ল কমান্ড প্যাটার্নের আদর্শ উদাহরণ:

  • অ্যাপ্লিকেশন সরঞ্জামদণ্ডের সমস্ত বোতাম কিছু ক্রিয়াকলাপের সাথে যুক্ত।
  • এক্ষেত্রে বাটন হ'ল নির্বাহক।
  • এক্ষেত্রে পদক্ষেপ হ'ল আদেশ।

কমান্ডটি সাধারণত কিছু স্কোপ বা ব্যবসায়ের ক্ষেত্রের সাথে আবদ্ধ থাকে তবে এটি প্রয়োজনীয় নয়: আপনার কাছে কমান্ড থাকতে পারে যা একটি বিল জারি করে, রকেট শুরু করতে পারে বা একটি execute()অ্যাপ্লিকেশনের মধ্যে একই ইন্টারফেস (উদাহরণস্বরূপ একক পদ্ধতি) প্রয়োগকারী কোনও ফাইল সরিয়ে দেয়। প্রায়শই কমান্ডগুলি স্ব-অন্তর্ভুক্ত থাকে, সুতরাং তারা যে কাজটি করতে চায় তা প্রক্রিয়াজাত করার জন্য তাদের নির্বাহকের কাছ থেকে কোনও কিছুর প্রয়োজন হয় না (নির্মাণের সময় সমস্ত প্রয়োজনীয় তথ্য দেওয়া হয়), কখনও কখনও আদেশগুলি প্রসঙ্গ-সংবেদনশীল এবং এই প্রসঙ্গটি আবিষ্কার করতে সক্ষম হতে হবে ( ব্যাকস্পেস কমান্ডটি সঠিকভাবে পূর্ববর্তী অক্ষরটি সরিয়ে দিতে পাঠ্যের ক্যারেটের অবস্থানটি জানতে হবে; রোলব্যাক কমান্ডটি বর্তমান লেনদেনটি আবিষ্কার করবে; ...)।

কৌশল একটি বিট আলাদা: এটি আরো কিছু এলাকায় আবদ্ধ হয়। কৌশলটি কোনও তারিখের বিন্যাস করতে (ইউটিসি? স্থানীয় নির্দিষ্ট?) ("তারিখ বিন্যাসক" কৌশল) বা জ্যামিতিক চিত্র ("বর্গাকার ক্যালকুলেটর" কৌশল) এর জন্য একটি বর্গ গণনা করার জন্য একটি বিধি সংজ্ঞা দিতে পারে। কৌশলগুলি এই অর্থে ফ্লাইওয়েট অবজেক্টস যা কোনও কিছুকে ইনপুট ("তারিখ", "চিত্র", ...) হিসাবে গ্রহণ করে এবং এর ভিত্তিতে কিছু সিদ্ধান্ত নেয়। সম্ভবত না ভাল, কিন্তু ভালো কৌশলের দৃষ্টান্ত সঙ্গে সংযুক্ত এক javax.xml.transform.Sourceইন্টারফেস: উপর কিনা গৃহীত অবজেক্ট নির্ভর করে DOMSourceবা SAXSourceবা StreamSourceকৌশল (= XSLT ট্রান্সফরমার এই ক্ষেত্রে) এটি প্রক্রিয়া বিভিন্ন নিয়ম প্রযোজ্য হবে। বাস্তবায়নটি সরল হতে পারে switchবা দায়বদ্ধতার ধরণের চেইনকে জড়িত করতে পারে ।

তবে প্রকৃতপক্ষে এই দুটি নিদর্শনগুলির মধ্যে একটি সাধারণ বিষয় রয়েছে: আদেশগুলি এবং কৌশলগুলি একই শব্দার্থক অঞ্চলের মধ্যে অ্যালগরিদমকে আবদ্ধ করে।


1
আমি আদেশটি কলব্যাক ফাংশন বা প্রতিক্রিয়া হিসাবে বিবেচনা করি। কমপক্ষে দু'জন খেলোয়াড় থাকা উচিত: একজন যিনি অ্যাকশনটির জন্য অনুরোধ করেছেন, এবং যিনি মৃত্যুদণ্ড কার্যকর করেছেন ... - আপনি কী বলতে চাইছেন তা আমি বুঝতে পেরেছি, তবে আমি 'কলব্যাক' শব্দটি ব্যবহার করা থেকে বিরত থাকব কারণ প্রায়শই শব্দটি ব্যবহৃত হয় 'কলব্যাক' একটি অ্যাসিনক্রোনাস অনুরোধকে বোঝায় এবং কমান্ড প্যাটার্নটি কার্যকর হওয়ার জন্য আপনাকে অ্যাসিক্রোনাস আহ্বান করতে হবে না। কেস পয়েন্ট: মাইক্রোসফ্ট ওয়ার্ড। সরঞ্জামদণ্ডের বোতামের ক্লিক এবং শর্টকাট কী প্রেসগুলি অ্যাসিক্রোনাস কমান্ডগুলি চাওয়া হয় না, তবে আমরা কমান্ড প্যাটার্নটি কীভাবে এই ক্ষেত্রে কার্যকর হবে তা উপলব্ধি করতে পারি
জিম জি।

আমি সম্মত হই, যদিও জিম বলেছিলাম আমি কলব্যাকের রেফারেন্স অপসারণ করতে সম্পাদনা করব।
জার্ক

ধন্যবাদ, আমি কিছু এক্সটেনশন করেছি। আমাকে জানাতে, যদি আপনি সম্মত হন / একমত হন না।
dma_k

5

COMMAND:

বেসিক উপাদান:

  1. কমান্ড বিমূর্ত কমান্ডের মত একটি ইন্টারফেস ঘোষণা করেexecute()
  2. রিসিভার কীভাবে একটি নির্দিষ্ট কমান্ড কার্যকর করতে হয় তা জানে
  3. Invoker ঝুলিতে ConcreteCommand , যা মৃত্যুদন্ড কার্যকর করা হয়েছে
  4. ক্লায়েন্ট সৃষ্টি ConcreteCommand এবং বরাদ্দ রিসিভার
  5. কংক্রিট কম্যান্ড কম্যান্ড এবং রিসিভারের মধ্যে বাইন্ডিং নির্ধারণ করে

কর্মধারা:

ক্লায়েন্ট কল Invoker => Invoker আহ্বান ConcreteCommand => ConcreteCommand আহ্বান রিসিভার পদ্ধতি, যা কার্যকরী বিমূর্ত কমান্ড পদ্ধতি।

সুবিধা : ক্লায়েন্ট কমান্ড এবং রিসিভারে পরিবর্তনগুলি প্রভাবিত করে না। চালক ক্লায়েন্ট এবং রিসিভারের মধ্যে আলগা সংযোগ সরবরাহ করে। আপনি একই ইনভোকার দিয়ে একাধিক কমান্ড চালাতে পারেন।

কমান্ড প্যাটার্ন আপনি বিভিন্ন একটি কমান্ডটি ব্যবহার করতে পারবেন রিসিভার একই ব্যবহার করে Invoker । ইনভোকার এর ধরণের সম্পর্কে অবগত নয় রিসিভারের

ধারণার ভাল করে বুঝতে জন্য, এই JournalDev কটাক্ষপাত আছে নিবন্ধটি দ্বারা পঙ্কজ কুমার এবং dzone নিবন্ধ দ্বারা জেমস Sugrue উইকিপিডিয়া লিংক ছাড়াও।

আপনি কমান্ড প্যাটার্নটি ব্যবহার করতে পারেন

  1. চালক এবং কমান্ডের গ্রহণকারীকে দ্বিগুণ করুন

  2. কলব্যাক প্রক্রিয়া প্রয়োগ করুন

  3. পূর্বাবস্থায় ফিরিয়ে আনুন এবং কার্যকারিতা আবার করুন

  4. কমান্ডের ইতিহাস বজায় রাখুন

java.lang.Threadকমান্ড প্যাটার্নের একটি ভাল বাস্তবায়ন । আপনি বিবেচনা করতে পারেন থ্রেড invoker & বর্গ বাস্তবায়নে যেমন runnable যেমন ConcreteCommonad / রিসিভার এবং run()যেমন পদ্ধতি কমান্ড

কমান্ড প্যাটার্নটির পূর্বাবস্থা / পূর্বাবস্থায় ফিরিয়ে আনা হবে থিয়োডোর নরভেলের নিবন্ধে

কৌশল:

কৌশল প্যাটার্ন বুঝতে খুব সহজ। যখন এই প্যাটার্ন ব্যবহার করুন

আপনার কাছে একটি অ্যালগোরিদমের জন্য একাধিক বাস্তবায়ন রয়েছে এবং নির্দিষ্ট অবস্থার উপর নির্ভর করে অ্যালগরিদমের প্রয়োগটি রান সময়ে পরিবর্তিত হতে পারে

এয়ারলাইন বুকিং সিস্টেমের ভাড়ার উপাদানটির একটি উদাহরণ নিন

এয়ারলাইনস বিভিন্ন সময়কাল - পিক এবং অফ পিক মাসে বিভিন্ন ভাড়া সরবরাহ করতে চায়। অফ শূন্য ভ্রমণের দিনগুলিতে, এটি আকর্ষণীয় ছাড়ের মাধ্যমে চাহিদা উত্সাহিত করতে চাই।

কৌশল প্যাটার্নের মূল গ্রহণযোগ্যতা :

  1. এটি একটি আচরণগত প্যাটার্ন
  2. এটি প্রতিনিধি উপর ভিত্তি করে
  3. এটি পদ্ধতির আচরণ পরিবর্তন করে অবজেক্টের সাহস পরিবর্তন করে
  4. এটি অ্যালগোরিদমের পরিবারের মধ্যে পরিবর্তন করতে ব্যবহৃত হয়
  5. এটি রান সময় অবজেক্টের আচরণ পরিবর্তন করে

কোড উদাহরণ সহ সম্পর্কিত পোস্ট:

কমান্ড ডিজাইনের প্যাটার্ন ব্যবহার করে

কৌশল প্যাটার্ন রিয়েল ওয়ার্ল্ড উদাহরণ


0

আমার জন্য, পার্থক্যটি হ'ল একটি উদ্দেশ্য। উভয় নিদর্শন বাস্তবায়ন বেশ অনুরূপ, কিন্তু বিভিন্ন উদ্দেশ্য আছে:

  • স্ট্র্যাটেজির জন্য, অবজেক্টটি ব্যবহার করে এমন উপাদানগুলি জানে যে জিনিসটি কী করে (এবং এটি তার নিজস্ব কাজের অংশটি সম্পাদন করতে ব্যবহার করবে) তবে এটি কীভাবে এটি করে তা যত্নশীল করে না।

  • একটি কমান্ডের জন্য, বস্তুর ব্যবহার উপাদান তন্ন তন্ন জানেন কি কমান্ড করে কিংবা কিভাবে এটি এটা আছে - এটা শুধু এটা কিভাবে ডাকা জানেন। কলারের কাজ কেবল কমান্ড চালানো - কমান্ড দ্বারা পরিচালিত প্রসেসিং কলারের মূল কাজের অংশ হয় না।

এটি পার্থক্য - উপাদানটি ব্যবহার করে বস্তুটি কি উপাদানটি কী তা সম্পর্কে জানে বা যত্ন করে? বেশিরভাগ সময় প্যাটার্ন অবজেক্টটি তার চালককে কোনও মান দেয় কিনা তার উপর ভিত্তি করে এটি নির্ধারণ করা যায়। যদি নিমন্ত্রক প্যাটার্ন অবজেক্টটি কী করে সে সম্পর্কে যত্নশীল হয় তবে সম্ভবত এটি এটি কোনও কিছু ফিরিয়ে আনতে চাইবে এবং এটি কৌশল হবে। যদি এটি কোনও রিটার্ন মান সম্পর্কে চিন্তা না করে তবে এটি সম্ভবত একটি কমান্ড (দ্রষ্টব্য, জাভা কলযোগ্য এর মতো কিছু এখনও একটি কমান্ড কারণ, যদিও এটি কোনও মান ফেরত দেয়, আহ্বানকারী মানটির কোনও যত্ন করে না - এটি কেবল এটি আবার পাস করে দেয়) মূলত কমান্ডটি সরবরাহ করে)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.