চারটি গ্যাংয়ের মধ্যে নির্ভরতা ইনজেকশন প্যাটার্নটি কেন অন্তর্ভুক্ত ছিল না?


37

কেন নির্ভরতা ইনজেকশন প্যাটার্ন incluided হয়নি চার গ্যাং ? জিএফএফ প্রাক-তারিখের বিস্তৃত স্বয়ংক্রিয় পরীক্ষণ করেছিল? নির্ভরতা ইনজেকশন এখন একটি মূল প্যাটার্ন হিসাবে বিবেচনা করা হয়?


18
.. কারণ "নির্ভরতা ইনজেকশন" কোনও প্যাটার্ন নয়!
দিপান মেহতা


14
যা কিছু পুনরাবৃত্তি হয় তা পুনরাবৃত্তির একটি প্যাটার্ন গঠন করে। সমস্ত ডিজাইনের উপাদান (যা অনন্য নয়, উন্মাদ ধারণাগুলি) "নিদর্শন"।
এস। লট

3
এই দীর্ঘ প্রতিক্রিয়াগুলি সম্ভবত বিভ্রান্তিমূলক, কারণ এ জাতীয় প্রকারের প্রশ্নটিকে বৈধতা দেয়। উল্লিখিত হিসাবে, নির্ভরতা ইনজেকশন কোনও ডিজাইনের ধরণ নয়। এটি অবজেক্ট ইনস্ট্যান্টেশনের জন্য একটি "প্রক্রিয়া", সাধারণত কাঠামোর দ্বারা পরিচালিত হয় led
নজর মেরজা

1
নির্ভরতা ইনজেকশন একটি প্যাটার্ন । এটি সার্ভিস লোকেটার প্যাটার্নটির বিরোধিতা করে। ফোলার পড়ুন যিনি শব্দটি তৈরি করেছিলেন। এত লোক কীভাবে এ জাতীয় বাজে কথা বলেছিল তা আমার ঠিক ধারণা নেই।
জেমস

উত্তর:


101

গ্যাং অফ ফোর বইটি প্রকাশিত হওয়ার সময় আমি সফটওয়্যার ডেভলপমেন্ট ম্যাগাজিনের সম্পাদক ছিলাম এবং আমি পুরো আত্মবিশ্বাসের সাথে বলতে পারি যে ইউনিট-টেস্টিং 1994 সালে ডিজাইন প্যাটার্নস প্রকাশিত হওয়ার পরে একটি ব্যাপক অনুশীলন ছিল না ।

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

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

যদিও কৌশল এবং একটি ইন্টারফেসে প্রোগ্রামিংয়ের সাধারণ ধারণাটি জিওএফ এবং 90-এর দশকের মাঝামাঝি জিটজিস্টের অংশ ছিল, তবে ইনজেকশনটির ধারণাটি পার্টিতে বেশ দেরিতে এসেছিল (প্রায় '03 -'05?)। সত্যি বলতে, আমার ধূসর চুলগুলি ডিআই-র দিকটি সম্পর্কে এখনও সন্দেহজনক ("আমার লনটি নামাও, আপনি কনফিগারেশন ফাইলগুলি ছুঁড়ে ফেলুন!")।


17
আমি আক্ষেপ করছি যে এরকম অন্তর্দৃষ্টিপূর্ণ উত্তর দেওয়ার জন্য আমার কাছে কেবলমাত্র একটি ভোট রয়েছে।

@ ল্যারি ওব্রায়ান: কনভেনশন ভিত্তিক নিবন্ধগুলির জন্য স্ক্যান করা কনফিগারেশন কোডকে বিস্তৃতভাবে সহজ করে এবং আইওসি পাত্রে এক্সএমএল কনফিগারেশনকে ব্যবহারিকভাবে বাদ দেয়।
কোয়ান্টিন-স্টারিন

4
আমি যুক্ত করতে চাই যে এর নির্ভরতা ইঞ্জেকশনটির মূল অংশটি কনফিগারেশন ফাইলগুলিতে মোটেই নির্ভর করে না। আপনি এটি হাতে হাতে সব করতে পারেন যা এটি ব্যবহার করা খুব সহজ করে তোলে এবং এটি এখনও খুব নমনীয় পদ্ধতির।
মার্কো ফিসেট

31

তারা এটা বলা স্ট্র্যাটেজি

তাদের কৌশলটিতে জটিল সাউন্ডিং নাম ছাড়াই নির্ভরতা ইনজেকশনের সমস্ত বৈশিষ্ট্য রয়েছে বলে মনে হয়।


16
-1। দুঃখিত! নির্ভরশীল ইনজেকশনটির সাথে কৌশল প্যাটার্নের কোনও সম্পর্ক নেই।
দিপান মেহতা


14
@ দিপান: এটিকে কম করে দেওয়ার আগে, আপনি পাঁচ মিনিট উত্তরটি সম্পর্কে আরও ভাল করে চিন্তা করতে পারেন।
ডক ব্রাউন

6
এটা সত্য যে নির্ভরতা ইনজেকশন কৌশল প্যাটার্নের সাথে খুব মিল হিসাবে বিবেচিত হতে পারে, কিন্তু লোকেরা যখন নির্ভরতা ইনজেকশন বলে তখন তাদের সাধারণত বোঝায় নিয়ন্ত্রণের বিপরীতটি, যা আমি মনে করি কৌশল থেকে অনেক বেশি আলাদা (esp। IoC ধারক)।
ম্যাটড্যাভি

8
ডিআই ক্রিয়েটিভ প্যাটার্নের বেশি। এটি কৌশল তৈরি করে এবং ইনজেকশন দেয়। এটি একটি কৌশল বলা ঠিক অর্ধেক সত্য। ডিআই আরও মাইক্রোকারেল প্যাটার্ন! আমি বিশ্বাস করতে পারি না মানুষ এটিকে উজ্জীবিত করে। কৌশলটি প্রয়োজনের চেয়ে বেশি ভাল ডিআই এর বৈশিষ্ট্যের মতো।
ফ্যালকন

0

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

কৌশল আলোচনায় আসতে পারে তবে কৌশল নির্ভরতা ইনজেকশন সম্পর্কে কথা বলে না। তবে কোনও একক প্রকল্পে বা dll তে কৌশল প্যাটার্ন ব্যবহার করার সময় (সমস্ত শ্রেণি এবং ইন্টারফেস একটি প্রকল্পে থাকে) দেখা যাচ্ছে যে আমরা নির্ভরতা ইনজেকশনটি করছি। আসলে আমরা নই।

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

যদি এমন কোনও প্যাটার্ন থাকে যা নির্ভরতা ইনজেকশনের সাথে ঘনিষ্ঠভাবে সাদৃশ্যপূর্ণ তবে এটি অ্যাবস্ট্রাক্ট ফ্যাক্টরি পদ্ধতি প্যাটার্ন। এই প্যাটার্নটি নির্ভরতা ইনজেক্ট করার জন্য কৌশল প্যাটার্নের অভ্যন্তরে ব্যবহার করা যেতে পারে।


2
এটি প্রশ্নের উত্তর দেয় না। দয়া করে অন্যান্য উত্তরের জবাব দেওয়ার পরিবর্তে আসল প্রশ্নটি পড়ুন :)
আন্দ্রেস এফ।

-4

উত্তর কৌশলটি 100% সঠিক। আমি এটি ভোট দিয়েছি তবে মন্তব্য করতে পারি।

"কৌশলটি এটিকে ব্যবহার করে এমন ক্লায়েন্টদের থেকে অ্যালগরিদমকে স্বতন্ত্রভাবে পৃথক হতে দেয় [[১] গামা এট আল রচিত প্রভাবশালী বই ডিজাইন প্যাটার্নসের মধ্যে অন্তর্ভুক্ত কৌশলগুলির মধ্যে একটি হল কৌশল যা সফ্টওয়্যার ডিজাইনের বর্ণনা দেওয়ার জন্য নিদর্শনগুলি ব্যবহার করার ধারণাকে জনপ্রিয় করে তুলেছে।"

একটি নকশা প্যাটার্ন তার ব্যবহারের উপর নির্ভর করে না। নির্ভরতা ইনজেকশন কৌশল প্যাটার্ন ব্যবহার করে প্রয়োগ করা হয়। আমরা যদি ব্যবহারের ক্ষেত্রে ভিত্তিতে প্রতিটি প্যাটার্নটির নামকরণ করি তবে আমাদের প্রচুর নিদর্শনগুলির নামকরণ করতে হবে।

সংগ্রহস্থল প্যাটার্নটি কোনও নতুন ধরণ নয়, এটি টেম্পলেট প্যাটার্ন।

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

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

জিওএফ-এর ব্যবহৃত বিশুদ্ধ বিমূর্ত শ্রেণিগুলির ইন্টারফেস নেই, এবং একাধিক শ্রেণীর উত্তরাধিকারী সি ++ এর দক্ষতারও সুযোগ নিয়েছিল।


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