নির্ভরতা ইনজেকশন কীভাবে কেবল জটিলতাটিকে একটি পৃথক শ্রেণিতে স্থানান্তরিত করে না?


9

আমি এই সপ্তাহে নির্ভরতা ইনজেকশনের জন্য টাইফুন কাঠামোটি ব্যবহার করার চেষ্টা করছি। আমি পেয়েছি যে ইউনিট টেস্টিংয়ের সময় বস্তুর নির্মাণকে পৃথক করে মকদের সাথে স্বেচ্ছাসেবী উপাদানগুলি প্রতিস্থাপনের জন্য উপকারী এবং এখন পর্যন্ত আমি একা এর থেকে বেনিফিট দেখেছি।

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


6
এক দশকে আমি প্রত্যাশা করি যে সিআইএলটন থেকে ডিআই বাশিংয়ের তালিকাটি গ্রহণ করবে তবে ভাল কারণেই এবার। এর কিছু ভাল ব্যবহার রয়েছে তবে আমি প্রভাবটি মূল্যায়নের বিষয়ে খুব সতর্কতার পরামর্শ দিচ্ছি।
বালোগ পাল

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

7
নোট করুন যে কোড সংগঠিত করার জন্য যে কোনও সিস্টেমকে "কেবল অন্য কোথাও জটিলতা সরিয়ে নেওয়া" হিসাবে বর্ণনা করা যেতে পারে। জটিলতা দূর করার বিষয়ে এটি এতটা যুক্তিযুক্ত, দরকারী উপায়ে সংগঠিত করার মতো নয়।

1
যদি আপনাকে 50 টি শিরোনাম আমদানি করতে হয় তবে আপনাকে এটি কোথাও করতে হবে। ডিআই আপনাকে আপনার কোড পরীক্ষার সহজ ইউনিটের সাহায্যে সহায়তা করে।
বি

2
সুতরাং, আপনি কি বলছেন যে এখন আপনার নিয়ামক নিয়ন্ত্রণের দিকে মনোনিবেশ করা হয়েছে এবং আপনার শিরোনাম আমদানি কারখানাটি হেডার আমদানিতে ফোকাস করছে? আপনি যখন ডিআই ফ্রেমওয়ার্ক ব্যবহার করছেন বা না করেন তবে কীভাবে এটি কখনই খারাপ জিনিস হতে পারে?
পিডিআর

উত্তর:


16

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

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

বেশ কয়েকটি নীতি রয়েছে যা একই রকম এবং প্রায়শই একসাথে ব্যবহৃত হয়: নির্ভরতা ইনজেকশন (ডিআই), নিয়ন্ত্রণের বিপরীতমুখী (আইওসি) এবং নির্ভরতা বিপরীতমুখী মূলনীতি (ডিআইপি)

এই নিবন্ধটি থেকে http://martinfowler.com/articles/dipInTheWild.html

ডিআই তারের সম্পর্কে, আইওসি দিকনির্দেশ সম্পর্কে এবং ডিআইপি আকারের বিষয়ে


2
+1, শেষ উদ্ধৃতি জন্য। এই 3 টি ধারণার এটি সর্বোত্তম ব্যাখ্যা যা লোকেরা প্রায়শই ভুল বুঝে।
হাইলেম

উপরের লিঙ্ক করা নিবন্ধটি সত্যিই অসামান্য। একটি যথেষ্ট গভীর এবং খুব স্পষ্ট ব্যাখ্যা।
ডিমেট্রিকটস

10

নির্ভরতা ইনজেকশন জটিলতা হ্রাস করে না, তবে উদ্বেগের পৃথকীকরণ এবং সংমিশ্রণ সংমিশ্রনের মাধ্যমে এটি মানবিকতা বৃদ্ধি করে।

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

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


2

সাধারণ মানুষের কথায়:

নির্ভরতা ইনজেকশন জটিলতা সরিয়ে দেয় যেখানে এটি কম ক্ষতি করে।

@Gnat এর জন্য সম্পাদনা করুন: ডিআই কেবল একটি পৃথক শ্রেণিতে জটিলতা সরিয়ে নিয়েছে না, এটি এটি যেখানে কম ক্ষতি সৃষ্টি করে সেখানে নিয়ে যাচ্ছে।


এই প্রশ্ন জিজ্ঞাসা উত্তর কিভাবে?
gnat

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