নির্ভরতা ইনজেকশন দিয়ে আপনি কীভাবে কনফিগারেশন পরিচালনা করবেন?


18

আমি ডিআই / আইওসি-র একটি বড় ভক্ত। হার্ড নির্ভরতাগুলি হ্যান্ডল করার জন্য / বিমূর্ত করার পক্ষে এটি দুর্দান্ত এবং জীবনকে কিছুটা সহজ করে তুলেছে।

তবে এটির সাথে আমার একটি ছোট গ্রিপ রয়েছে, যা কীভাবে সমাধান করবেন তা সম্পর্কে আমি নিশ্চিত নই।

ডিআই / আইওসি-র প্রাথমিক ধারণাটি হ'ল যখন কোনও বস্তু তাত্ক্ষণিকভাবে চালিত হয় তখন তার সমস্ত নির্ভরতা নির্ধারকের মধ্যে প্রাক-পূর্ণ হয়।

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

  1. নির্ভরতা (আপনার বস্তুর কাজ করার জন্য প্রয়োজনীয় জিনিসগুলি)
  2. কনফিগারেশন (কাজ করার জন্য প্রয়োজনীয় পরিবেশ সম্পর্কে তথ্য)
  3. পরামিতি (ডেটা যা কাজ করে)

আমি দেখতে পেয়েছি যে আইওসি নির্ভরতা নিয়ে ভালভাবে কাজ করে। তবে আমি এখনও অন্য দু'জনের সাথে মোকাবিলা করার জন্য সর্বোত্তম উপায়ে কাজ করার চেষ্টা করছি। তবে কনস্ট্রাক্টরটি যেহেতু আইওসি পাত্রে চালিত তা বোঝা যাচ্ছে, এই আইটেমগুলি আইওসি পাত্রে রাখার দরকার আছে বলে মনে হয়।

আমি কী কৌশলগুলি / নিদর্শনগুলি লোকেরা নিযুক্ত করে এবং কী কী সুবিধা এবং অসুবিধাগুলি খুঁজে পেয়েছি তা জানতে চাই।

বিশেষ দ্রষ্টব্য। আমি সচেতন এটি একটি অত্যন্ত বিষয়গত প্রশ্ন, এবং এসই নির্দেশিকা অনুযায়ী এটি একটি "ভাল" বিষয়গত প্রশ্ন করার চেষ্টা করেছি to


"কনফিগারেশন" দ্বারা আপনি কী ডেভ-এনভায়রনমেন্ট কনফিগারেশন (উন্নয়ন বা উত্পাদনের মতো) বোঝাতে চান? যদি তা হয় তবে আমি সাধারণত এটি একটি traditionalতিহ্যগত নির্ভরতা হিসাবে পরিচালনা করি।
মেটাফাইট

নির্ভরতা সহ ডিফল্ট কনফিগারেশন দিয়ে তৈরি করা ভাল যাতে অবজেক্টটি ভালভাবে তৈরি হয়। কনফিগারেশন এবং অন্যান্য পরামিতি সেট করতে অতিরিক্ত পদ্ধতিগুলিতে কল করুন। কর্টারে খুব বেশি কাজ করা খারাপ কাজ।
david.pfx

I am still trying to work out the best way to deal with the other two- আপনার বস্তুর সাধারণ পরামিতি হিসাবে তাদের পাস?
রবার্ট হার্ভে

নিবন্ধন করুন এগুলি ডিবাগিংকে আরও সহজ করে তোলে।
আরটিস

উত্তর:


9

কনফিগারেশন (কাজ করার জন্য প্রয়োজনীয় পরিবেশ সম্পর্কে তথ্য)

একটি কনফিগারেশন ক্লাস তৈরি করুন (চয়ন করার জন্য: একটি ইন্টারফেস + একটি বাস্তবায়ন) যার উদ্দেশ্য পরিবেশ সম্পর্কে তথ্য সরবরাহ করা। এটি আপনার অবজেক্টের কাজ করার জন্য প্রয়োজনীয় অন্যান্য বস্তুর চেয়ে কোনওভাবেই কনফিগারেশনকে পৃথক করে না (পয়েন্ট 1)।

পরামিতি (ডেটা যা কাজ করে)

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


1

আমি যা করি তা এই ক্ষেত্রেগুলির জন্য একটি কারখানার প্যাটার্ন।

আমি অবজেক্টটি নিজেই নির্ভরতা হিসাবে ব্যবহার করি না তবে গেট পদ্ধতিতে একটি ফ্যাক্টরি অবজেক্ট তৈরি করি যা পরামিতিগুলি গ্রহণ করে যা ধারক দ্বারা স্বয়ংক্রিয়ভাবে আবদ্ধ হতে পারে না।

প্রাক্তন .:

 interface IDependencyObject {
       ....
 }

 class DependencyObject {

      public DependencyObject(int primitive, IAnotherDependency anotherDependency) {
      ...
      }

 }

 class DependencyObjectFactory {

      private readonly IAnotherDependency anotherDependency;

      public DependencyObjectFactory(IAnotherDependency anotherDependency) {
           this.anotherDependency = anotherDependency;
      }

      public IDependencyObject Get(int primitive) {
           return new DependencyObject(primitive, anotherDependency);
      }
 }

 interface IDependencyObjectFactory {
       IDependencyObject Get(int primitive);
 }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.