এটি উর্ধ্বমুখী উত্তরের অনুরূপ তবে আমি উচ্চস্বরে চিন্তা করতে চাই - সম্ভবত অন্যরাও বিষয়টিকে এইভাবে দেখেন।
ক্লাসিকাল ওও ক্লাসের গ্রাহকদের জন্য সর্বজনীন "সূচনা" চুক্তি সংজ্ঞায়িত করতে কনস্ট্রাক্টর ব্যবহার করে (সমস্ত বাস্তবায়ন বিবরণ গোপন করে; ওরফে এনক্যাপসুলেশন)। এই চুক্তিটি নিশ্চিত করতে পারে যে ইনস্ট্যান্টেশনের পরে আপনার কাছে ব্যবহারের জন্য প্রস্তুত একটি অবজেক্ট রয়েছে (যেমন ব্যবহারকারীর দ্বারা স্মরণে রাখা কোনও অতিরিক্ত সূচনাকরণ পদক্ষেপ নেই) (এর, ভুলে যাওয়া)।
(কনস্ট্রাক্টর) ডিআই অবিচ্ছিন্নভাবে এই পাবলিক কনস্ট্রাক্টর ইন্টারফেসের মাধ্যমে রক্তপাতের প্রয়োগের বিবরণ দিয়ে এনক্যাপসুলেশনটি ভেঙে দেয় । যতক্ষণ আমরা এখনও পাবলিক কনস্ট্রাক্টর ব্যবহারকারীদের জন্য আরম্ভের চুক্তি সংজ্ঞায়িত করার জন্য দায়বদ্ধ হিসাবে বিবেচনা করি, ততক্ষণ আমরা এনকেপসুলেশনের একটি ভয়াবহ লঙ্ঘন তৈরি করেছি।
তাত্ত্বিক উদাহরণ:
ক্লাস ফু এর 4 টি পদ্ধতি রয়েছে এবং প্রারম্ভিককরণের জন্য একটি পূর্ণসংখ্যার প্রয়োজন হয়, সুতরাং এর নির্মাতা দেখতে ফু (অন্তর্নির্মিত আকার) এর মতো দেখায় এবং এটি ক্লাস ফু এর ব্যবহারকারীদের সাথে সাথে পরিষ্কার হয়ে গেছে যে তাদের অবশ্যই একটি আকার সরবরাহ করতে হবে ফুকে কাজ করার জন্য ইনস্ট্যান্টেশনে ।
বলুন ফু এর এই বিশেষ প্রয়োগের কাজটি করার জন্য আইডাব্ল্যাজেটের দরকারও পড়তে পারে। এই নির্ভরতার কনস্ট্রাক্টর ইঞ্জেকশনটি আমাদের মতো একটি কনস্ট্রাক্টর তৈরি করতে চাইবে ফু এর (ইনট সাইজ, আই উইজেট উইজেট)
এ সম্পর্কে আমাকে যেটা বিরক্ত করে তা এখন আমাদের কাছে এমন একটি নির্মাতা রয়েছে যা নির্ভরতার সাথে প্রাথমিককরণের ডেটা মিশ্রিত করে - একটি ইনপুট শ্রেণীর ব্যবহারকারীর ( আকার ) আগ্রহী, অন্যটি অভ্যন্তরীণ নির্ভরতা যা কেবল ব্যবহারকারীকে বিভ্রান্ত করার জন্য কাজ করে এবং এটি একটি বাস্তবায়ন বিশদ ( উইজেট )
আকারের প্যারামিটার কোনও নির্ভরতা নয় - এটি প্রতি-প্রতিশির আরম্ভের মানটি সহজ। আইওসি বাহ্যিক নির্ভরতা (উইজেটের মতো) জন্য ড্যান্ডি তবে অভ্যন্তরীণ অবস্থার সূচনার জন্য নয়।
আরও খারাপ, উইজেটটি এই শ্রেণীর 4 টি পদ্ধতির মধ্যে কেবল 2 টির জন্য প্রয়োজনীয় যদি হয়; আমি উইজেটের জন্য ইনস্ট্যান্টেশন ওভারহেড বহন করতে পারে যদিও এটি ব্যবহৃত নাও হতে পারে!
এটি কীভাবে আপস / মিলন করবেন?
একটি পদ্ধতির অপারেশন চুক্তি সংজ্ঞায়িত করার জন্য ইন্টারফেসে একচেটিয়াভাবে স্যুইচ করা হয়; এবং ব্যবহারকারীদের দ্বারা নির্মাণকারীর ব্যবহার বাতিল করুন। সামঞ্জস্যপূর্ণ হতে, সমস্ত বস্তু কেবলমাত্র ইন্টারফেসের মাধ্যমে অ্যাক্সেস করতে হবে এবং কেবল কিছু সমাধানকারী (আইওসি / ডিআই কনটেইনার) এর মাধ্যমে ইনস্ট্যান্ট করতে হবে। কেবল পাত্রে জিনিসগুলি তাত্পর্যপূর্ণ হয়।
এটি উইজেট নির্ভরতার যত্ন নেয়, তবে আমরা কীভাবে "সাইজ" সূচনা করব ফু ইন্টারফেসে পৃথক প্রারম্ভিক পদ্ধতি অবলম্বন না করে? এই সমাধানটি ব্যবহার করে, আমরা উদাহরণটি পাওয়ার সময়টির মধ্যেই ফু-র কোনও উদাহরণ সম্পূর্ণরূপে শুরু হয়েছিল তা নিশ্চিত করার ক্ষমতাটি আমরা হারিয়ে ফেলেছি। বামার, কারণ আমি সত্যিই কনস্ট্রাক্টর ইঞ্জেকশনের ধারণা এবং সরলতাকে পছন্দ করি ।
এই ডিআই বিশ্বে আমি গ্যারান্টেড ইনিশিয়েশন কীভাবে অর্জন করব, যখন ইনিশিয়েশন কেবলমাত্র বাহ্যিক নির্ভরতার চেয়ে বেশি?