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