পুনরাবৃত্তিকারী
Iterator একটি আচরণগত নকশা প্যাটার্ন. একটি বস্তুর প্রতিনিধিত্ব করে যা সমষ্টিগত বস্তুর প্রতিটির বর্ণনা ব্যবহার না করেই একটি সমষ্টিগত বস্তুর উপাদানগুলিতে অনুক্রমিক অ্যাক্সেসের অনুমতি দেয়।
![পুনরাবৃত্তিকারী](https://cdn.codegym.cc/images/article/87f809f8-e650-4b92-9d29-2624a2b1a64a/800.jpeg)
উদাহরণস্বরূপ, একটি ট্রি, একটি লিঙ্ক করা তালিকা, একটি হ্যাশ টেবিল এবং একটি অ্যারের মতো উপাদানগুলিকে একটি ইটারেটর অবজেক্ট ব্যবহার করে অতিক্রম করা যেতে পারে (এবং সংশোধন করা)।
উপাদানগুলির মাধ্যমে পুনরাবৃত্তি করা হয় পুনরাবৃত্ত বস্তু দ্বারা, সংগ্রহের দ্বারা নয়। এটি সংগ্রহের ইন্টারফেস এবং বাস্তবায়নকে সরল করে, এবং উদ্বেগের আরও যৌক্তিক বিচ্ছেদ প্রচার করে।
একটি সম্পূর্ণরূপে বাস্তবায়িত পুনরাবৃত্তিকারীর একটি বৈশিষ্ট্য হল যে কোডটি পুনরাবৃত্তিকারী ব্যবহার করে সে পুনরাবৃত্ত সমষ্টির ধরন সম্পর্কে কিছু নাও জানতে পারে।
এই পদ্ধতি খুব প্রায়ই ব্যবহৃত হয়। উদাহরণস্বরূপ, আপনি ডাটাবেসে একটি এসকিউএল ক্যোয়ারী পাঠান এবং এর প্রতিক্রিয়ায় এটি আপনাকে একটি পুনরাবৃত্তিকারী প্রদান করে (এসকিউএল পরিভাষায়, এটি সাধারণত একটি কার্সার বলা হয়)। এবং ফলস্বরূপ পুনরাবৃত্তিকারীর সাহায্যে, আপনি এসকিউএল প্রতিক্রিয়া থেকে একের পর এক সারি নিতে পারেন।
আদেশ
একটি কমান্ড হল একটি আচরণগত নকশা প্যাটার্ন যা অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ে ব্যবহৃত হয় যা একটি ক্রিয়াকে প্রতিনিধিত্ব করে। কমান্ড অবজেক্টে অ্যাকশন এবং এর প্যারামিটার থাকে।
![আদেশ](https://cdn.codegym.cc/images/article/d46ddf17-e840-4f4b-a505-092e666ec88f/800.jpeg)
একটি পদ্ধতি কল করতে, আপনার সাধারণত প্রয়োজন:
- বস্তুর উল্লেখ
- পদ্ধতির নাম (পদ্ধতি উল্লেখ)
- পদ্ধতি পরামিতি মান
- ব্যবহৃত বস্তু ধারণ করে প্রেক্ষাপটের রেফারেন্স
এই সমস্ত ডেটা একটি বস্তুতে প্যাক করা দরকার - কমান্ড ( কমান্ড )।
তবে এটিই সব নয়: সর্বোপরি, কাউকে অবশ্যই কমান্ডটি কার্যকর করতে হবে। সুতরাং এই প্যাটার্নটিতে আরও চারটি সত্তা রয়েছে: কমান্ড ( কমান্ড ), একটি কমান্ড রিসিভার ( রিসিভার ), একটি কমান্ড কলার ( ইনভোকার ) এবং একটি ক্লায়েন্ট ( ক্লায়েন্ট )।
একটি বস্তুআদেশরিসিভার সম্পর্কে জানে এবং রিসিভার পদ্ধতিতে কল করে। রিসিভার প্যারামিটারের মান কমান্ডে সংরক্ষণ করা হয়। কলার (আমন্ত্রণকারী) জানেন কিভাবে কমান্ডটি চালাতে হয় এবং সম্ভবত কার্যকর করা কমান্ডের ট্র্যাক রাখে। কলার (আবহকারী) একটি নির্দিষ্ট কমান্ড সম্পর্কে কিছুই জানে না, এটি কেবল ইন্টারফেস সম্পর্কে জানে।
উভয় বস্তু (কলিং অবজেক্ট এবং বেশ কয়েকটি কমান্ড অবজেক্ট) ক্লায়েন্ট অবজেক্টের অন্তর্গত। ক্লায়েন্ট সিদ্ধান্ত নেয় কোন কমান্ডগুলি কার্যকর করতে হবে এবং কখন। একটি কমান্ড চালানোর জন্য, এটি কলার (আবহকারী) কাছে কমান্ড অবজেক্ট পাস করে।
কমান্ড অবজেক্টগুলি ব্যবহার করে ভাগ করা উপাদানগুলি তৈরি করা সহজ করে তোলে যা আপনাকে বর্গ পদ্ধতি বা পদ্ধতির পরামিতিগুলি না জেনে যেকোন সময়ে অর্পণ করতে বা মেথড কল করতে হবে।
কলার অবজেক্ট (ইনভোকার) ব্যবহার করে আপনি ক্লায়েন্টকে এই অ্যাকাউন্টিং মডেল সম্পর্কে জানার প্রয়োজন ছাড়াই এক্সিকিউটেড কমান্ডের রেকর্ড রাখতে পারবেন (যেমন অ্যাকাউন্টিং কার্যকর হতে পারে, উদাহরণস্বরূপ, পূর্বাবস্থায় ফেরানো এবং পুনরায় করা কমান্ড প্রয়োগ করতে)।
উদাহরণস্বরূপ, আপনি একটি প্রোগ্রাম লিখছেন যা আপনাকে একটি সময়সূচীতে বিভিন্ন কাজ সম্পাদন করতে দেয়। একদিকে, আপনার প্রোগ্রামটি কাজের ট্র্যাক রাখে এবং তাদের লঞ্চ পরিচালনা করে, অন্যদিকে, এটিতে বেশ কয়েকটি নির্বাহক থাকতে পারে, যার প্রত্যেকটি নিজস্ব ধরণের কমান্ডগুলি চালাতে পারে। যেমন, এসএমএস পাঠানো, চিঠি পাঠানো, টেলিগ্রামে বার্তা পাঠানো ইত্যাদি।
পর্যবেক্ষক
পর্যবেক্ষক একটি আচরণগত নকশা প্যাটার্ন. একটি ক্লাস মেকানিজম প্রয়োগ করে যা এই শ্রেণীর একটি বস্তুকে অন্যান্য অবজেক্টের অবস্থার পরিবর্তন সম্পর্কে বিজ্ঞপ্তি পেতে এবং এইভাবে তাদের পর্যবেক্ষণ করতে দেয়।
![পর্যবেক্ষক](https://cdn.codegym.cc/images/article/4ea53747-311e-48ea-a92c-f622b44ac328/800.jpeg)
যে ক্লাসে অন্যান্য ক্লাস সাবস্ক্রাইব করে সেগুলিকে বলা হয় সাবজেক্ট , এবং সাবস্ক্রাইব করা ক্লাসগুলিকে পর্যবেক্ষক বলা হয় ।
পর্যবেক্ষক প্যাটার্ন বাস্তবায়ন করার সময়, নিম্নলিখিত ক্লাসগুলি সাধারণত ব্যবহৃত হয়:
- পর্যবেক্ষণযোগ্য - একটি ইন্টারফেস যা পর্যবেক্ষকদের যোগ, অপসারণ এবং অবহিত করার পদ্ধতিগুলিকে সংজ্ঞায়িত করে;
- পর্যবেক্ষক - ইন্টারফেস যার মাধ্যমে পর্যবেক্ষক বিজ্ঞপ্তি গ্রহণ করে;
- ConcreteObservable হল একটি কংক্রিট ক্লাস যা পর্যবেক্ষণযোগ্য ইন্টারফেস প্রয়োগ করে ;
- ConcreteObserver হল একটি কংক্রিট ক্লাস যা অবজারভার ইন্টারফেস প্রয়োগ করে ।
পর্যবেক্ষক প্যাটার্ন ব্যবহার করা হয় যখন সিস্টেম:
- অন্তত একটি বস্তু আছে যা বার্তা পাঠায়;
- বার্তাগুলির কমপক্ষে একজন প্রাপক আছে, এবং অ্যাপ্লিকেশনটি চলাকালীন তাদের সংখ্যা এবং রচনা পরিবর্তন হতে পারে;
- ইন্টারঅ্যাকটিং ক্লাসের শক্তিশালী যুগল এড়ায়।
এই প্যাটার্নটি প্রায়শই এমন পরিস্থিতিতে ব্যবহৃত হয় যেখানে বার্তা প্রেরক তাদের প্রদত্ত তথ্যের সাথে প্রাপকরা কী করেন তাতে আগ্রহী হন না।
দর্শনার্থী
ভিজিটর হল একটি আচরণগত নকশা প্যাটার্ন যা একটি অপারেশন বর্ণনা করে যা অন্যান্য শ্রেণীর বস্তুর উপর সঞ্চালিত হয়। পরিদর্শনকারী পরিবর্তন করার সময়, পরিষেবা দেওয়া ক্লাসগুলি পরিবর্তন করার দরকার নেই।
টেমপ্লেটটি ডাবল-ডিসপ্যাচিং ডাউনকাস্টের অবলম্বন না করে হারিয়ে যাওয়া ধরণের তথ্য পুনরুদ্ধারের জন্য ক্লাসিক কৌশল প্রদর্শন করে।
![দর্শনার্থী](https://cdn.codegym.cc/images/article/012e3e42-6151-4ecf-b322-0642841bf923/800.jpeg)
আপনাকে বেশ কয়েকটি অবজেক্টে কিছু সংযোগ বিচ্ছিন্ন অপারেশন করতে হবে, তবে আপনাকে তাদের কোড দূষণ এড়াতে হবে। এবং পছন্দসই অপারেশন করার আগে প্রতিটি নোডের ধরন জিজ্ঞাসা করার এবং পয়েন্টারটিকে সঠিক টাইপে কাস্ট করার কোন উপায় বা ইচ্ছা নেই।
টেমপ্লেটটি ব্যবহার করা উচিত যদি:
- বিভিন্ন ইন্টারফেস সহ বিভিন্ন শ্রেণীর বিভিন্ন অবজেক্ট রয়েছে, তবে নির্দিষ্ট ক্লাসের উপর নির্ভর করে তাদের উপর অপারেশন করা আবশ্যক;
- কাঠামোর উপর, কাঠামোকে জটিল করে বিভিন্ন ক্রিয়াকলাপ সম্পাদন করা প্রয়োজন;
- কাঠামোর উপর নতুন অপারেশন প্রায়ই যোগ করা হয়.
মধ্যস্থতাকারী
মধ্যস্থতাকারী হল একটি আচরণগত নকশা প্যাটার্ন যা আলগা কাপলিং বজায় রাখার সময় এবং একে অপরকে স্পষ্টভাবে উল্লেখ করার জন্য বস্তুর প্রয়োজনীয়তা এড়িয়ে চলার সময় একাধিক বস্তুকে ইন্টারঅ্যাক্ট করতে দেয়।
![মধ্যস্থতাকারী](https://cdn.codegym.cc/images/article/17d10313-3412-461b-82f2-c007d664adb6/800.jpeg)
মধ্যস্থতাকারী প্যাটার্ন আপনাকে অনেক বস্তুর মিথস্ক্রিয়া নিশ্চিত করতে দেয়, যখন একটি আলগা কাপলিং গঠন করে এবং বস্তুর একে অপরকে স্পষ্টভাবে উল্লেখ করার প্রয়োজনীয়তা দূর করে।
মধ্যস্থতাকারী বস্তুর সাথে তথ্য বিনিময়ের জন্য একটি ইন্টারফেস সংজ্ঞায়িত করেসহকর্মীরা, একটি নির্দিষ্ট মধ্যস্থতাকারী বস্তুর কর্ম সমন্বয় করেসহকর্মীরা.
প্রতিটি সহকর্মী শ্রেণী তার বস্তু সম্পর্কে জানেমধ্যস্থতাকারী, সমস্ত সহকর্মী শুধুমাত্র একজন মধ্যস্থতাকারীর সাথে তথ্য বিনিময় করে, তার অনুপস্থিতিতে তাদের সরাসরি তথ্য বিনিময় করতে হবে।
সহকর্মীরারিসেলারকে অনুরোধ পাঠান </span> এবং এটি থেকে অনুরোধ গ্রহণ করুন। মধ্যস্থতাকারী প্রতিটি অনুরোধ এক বা একাধিককে ফরোয়ার্ড করে সহযোগিতামূলক আচরণ প্রয়োগ করেসহকর্মীরা.