গ্লোবালগুলি ওওপিতে খারাপ হওয়ার কারণ রয়েছে ।
ফাংশন প্যারামিটারগুলিতে দক্ষতার সাথে অতিক্রম করার জন্য প্রয়োজনীয় সামগ্রীর সংখ্যা বা আকার যদি খুব বড় হয় তবে সাধারণত সবাই বিশ্বব্যাপী অবজেক্টের পরিবর্তে নির্ভরতা ইনজেকশন প্রস্তাব দেয় ।
তবে, যেখানে প্রায় প্রত্যেককে একটি নির্দিষ্ট ডেটা কাঠামো সম্পর্কে জানতে হবে, সেখানে নির্ভরতা ইনজেকশন কেন কোনও বৈশ্বিক বস্তুর চেয়ে ভাল?
উদাহরণ (একটি সরলীকৃত একটি, নির্দিষ্ট অ্যাপ্লিকেশনটিতে খুব গভীরভাবে না ভেবে বিন্দুটি দেখানোর জন্য)
অনেকগুলি ভার্চুয়াল গাড়ি রয়েছে যার মধ্যে প্রকার, নাম, রঙ, গতি, অবস্থান ইত্যাদি থেকে শুরু করে বিপুল সংখ্যক বৈশিষ্ট্য এবং রাজ্য রয়েছে A আরম্ভ এবং স্বয়ংক্রিয়) তাদের রাজ্য বা বৈশিষ্ট্যগুলির অনেকগুলি পরিবর্তন করতে পারে।
নিষ্পাপ সমাধানটি কেবল তাদের একটি গ্লোবাল ধারক তৈরি করা হবে
vector<Vehicle> vehicles;
যা কোথাও থেকে অ্যাক্সেস করা যেতে পারে।
আরও ওওপি বান্ধব সমাধান হ'ল কনটেইনারটি মূল ইভেন্ট লুপ পরিচালনা করে এমন ক্লাসের সদস্য হওয়া এবং এর নির্মাতায় তাত্ক্ষণিক হওয়া। প্রতিটি শ্রেণীর যা এটির প্রয়োজন, এবং মূল থ্রেডের সদস্য, তাদের নির্মাতার একটি পয়েন্টারের মাধ্যমে ধারকটিতে অ্যাক্সেস দেওয়া হবে। উদাহরণস্বরূপ, যদি কোনও নেটওয়ার্ক সংযোগের মাধ্যমে কোনও বাহ্যিক বার্তা আসে, পার্সিং পরিচালনা করে এমন একটি ক্লাস (প্রতিটি সংযোগের জন্য একটি) গ্রহণ করবে এবং পয়েন্টার বা রেফারেন্সের মাধ্যমে পার্সারটিতে ধারকটিতে অ্যাক্সেস থাকবে। এখন যদি পার্স করা বার্তাটির ফলস্বরূপ হয় পাত্রে কোনও উপাদান পরিবর্তিত হয় বা কোনও ক্রিয়া সম্পাদনের জন্য এর থেকে কিছু উপাত্তের প্রয়োজন হয় তবে এটি সংকেত এবং স্লটগুলির (বা আরও খারাপ, পার্সারে এগুলি সংরক্ষণ করে পরবর্তীতে যিনি পার্সার বলেছিলেন তাকে পুনরুদ্ধার করতে পারে)। অবশ্যই, নির্ভরযোগ্যতা ইনজেকশনের মাধ্যমে ধারকটিতে অ্যাক্সেস প্রাপ্ত সমস্ত শ্রেণিগুলি একই থ্রেডের অংশ। বিভিন্ন থ্রেড এটি সরাসরি অ্যাক্সেস করতে পারে না, তবে তাদের কাজটি করবে এবং তারপরে মূল থ্রেডে সংকেত প্রেরণ করবে এবং মূল থ্রেডের স্লটগুলি ধারকটি আপডেট করবে।
তবে, যদি সংখ্যাগরিষ্ঠ শ্রেণীর ধারকগুলিতে অ্যাক্সেস পাওয়া যায় তবে এটি কোনও বিশ্বব্যাপী থেকে সত্যই আলাদা কী করে? যদি অনেক শ্রেণীর ধারকটিতে ডেটা প্রয়োজন হয়, তবে "নির্ভরতা ইনজেকশন উপায়" কি কেবল ছদ্মবেশী বৈশ্বিক নয়?
একটি উত্তর থ্রেড সুরক্ষা হবে: যদিও আমি বিশ্বব্যাপী ধারকটি অপব্যবহার না করার বিষয়ে যত্ন নিচ্ছি তবে ভবিষ্যতে সম্ভবত অন্য কোনও বিকাশকারী, নিকটতম সময়সীমার চাপে তবুও সকলের যত্ন না নিয়ে গ্লোবাল ধারকটি আলাদা থ্রেডে ব্যবহার করবে all সংঘর্ষের ঘটনা। তবে নির্ভরতা ইনজেকশনের ক্ষেত্রেও, কেউ অন্য থ্রেডে চলমান কাউকে একটি পয়েন্টার দিতে পারে, যার ফলে একই সমস্যা দেখা দেয়।