উভয় শ্রেণীর উত্তরাধিকার এবং ইন্টারফেস উভয়েরই তাদের স্থান রয়েছে। উত্তরাধিকার অর্থ "একটি" যখন একটি ইন্টারফেস এমন একটি চুক্তি সরবরাহ করে যা "কিছু" কেমন আচরণ করে "তা সংজ্ঞায়িত করে।
আমি বলব যে প্রায়শই ইন্টারফেস ব্যবহার করা মোটেই খারাপ অভ্যাস নয়। আমি বর্তমানে বিল ওয়াগনার দ্বারা "কার্যকর সি # - আপনার সি উন্নত করার 50 টি নির্দিষ্ট উপায়" পড়ছি। আইটেম নাম্বার 22 টি সূচিত করে এবং আমি একটি উদ্ধৃতি দিয়েছি, "উত্তরাধিকারের জন্য ইন্টারফেসগুলি সংজ্ঞায়িত করা এবং প্রয়োগ করা পছন্দ করুন"।
সাধারণত যখন আমি ধারণামূলকভাবে সম্পর্কিত ধরণের মধ্যে সাধারণ আচরণের একটি নির্দিষ্ট প্রয়োগের সংজ্ঞা দিতে পারি তখন বেস ক্লাসগুলি ব্যবহার করি। প্রায়শই আমি ইন্টারফেস ব্যবহার করি। প্রকৃতপক্ষে, আমি সাধারণত কোনও শ্রেণীর জন্য একটি ইন্টারফেস সংজ্ঞা দিয়ে শুরু করি যখন আমি একটি তৈরি শুরু করি ... শেষ পর্যন্ত আমি ইন্টারফেসটি সংকলন না করেও দেখতে পাই যে এটির সর্বজনীন এপিআই সংজ্ঞায়িত করে শুরু করতে সহায়তা করে যাও ক্লাস থেকে যান। যদি আমি দেখতে পাই যে আমার ইন্টারফেস বাস্তবায়ন করার জন্য উভয়ই একাধিক ক্লাস রয়েছে, এবং বাস্তবায়নের যুক্তিটি অভিন্ন, তবেই আমি নিজেকে জিজ্ঞাসা করব যে প্রকারগুলির মধ্যে একটি সাধারণ বেস শ্রেণিটি প্রয়োগ করা বোধগম্য হবে কি না।
বিল ওয়াগনার্স বইয়ের কয়েকটা উদ্ধৃতি ...
সমস্ত উত্পন্ন ক্লাস তত্ক্ষণাত সেই আচরণকে সংযুক্ত করে। একটি ইন্টারফেসে সদস্য যোগ করা সেই ইন্টারফেসটি কার্যকর করে এমন সমস্ত শ্রেণিকে ভেঙে দেয়। এগুলিতে নতুন পদ্ধতি থাকবে না এবং আর সংকলন করবে না। প্রতিটি প্রয়োগকারীকে নতুন সদস্যকে অন্তর্ভুক্ত করতে সেই ধরণের আপডেট করতে হবে। একটি বিমূর্ত বেস বর্গ এবং একটি ইন্টারফেস মধ্যে নির্বাচন সময়ের সাথে আপনার বিমূর্ততা সমর্থন কিভাবে সেরা একটি প্রশ্ন। ইন্টারফেসগুলি স্থির হয়েছে: আপনি কোনও ধরনের কার্যকারিতা সেট করার জন্য একটি চুক্তি হিসাবে একটি ইন্টারফেস প্রকাশ করেন। বেস ক্লাসগুলি সময়ের সাথে বাড়ানো যেতে পারে। এই এক্সটেনশনগুলি প্রতিটি উত্পন্ন শ্রেণীর অংশ হয়ে যায়। দুটি মডেল একাধিক ইন্টারফেস সমর্থন করার সময় বাস্তবায়ন কোড পুনরায় ব্যবহার করতে মিশ্রিত করা যেতে পারে। " এগুলিতে নতুন পদ্ধতি থাকবে না এবং আর সংকলন করবে না। প্রতিটি প্রয়োগকারীকে নতুন সদস্যকে অন্তর্ভুক্ত করতে সেই ধরণের আপডেট করতে হবে। একটি বিমূর্ত বেস ক্লাস এবং একটি ইন্টারফেসের মধ্যে নির্বাচন করা সময়ের সাথে সাথে আপনার বিমূর্ততাগুলিকে কীভাবে সেরা সমর্থন করবে তা একটি প্রশ্ন। ইন্টারফেসগুলি স্থির হয়েছে: আপনি কোনও ধরনের কার্যকারিতা সেট করার জন্য একটি চুক্তি হিসাবে একটি ইন্টারফেস প্রকাশ করেন। বেস ক্লাসগুলি সময়ের সাথে বাড়ানো যেতে পারে। এই এক্সটেনশনগুলি প্রতিটি উত্পন্ন শ্রেণীর অংশ হয়ে যায়। দুটি মডেল একাধিক ইন্টারফেস সমর্থন করার সময় বাস্তবায়ন কোড পুনরায় ব্যবহার করতে মিশ্রিত করা যেতে পারে। " এগুলিতে নতুন পদ্ধতি থাকবে না এবং আর সংকলন করবে না। প্রতিটি প্রয়োগকারীকে নতুন সদস্যকে অন্তর্ভুক্ত করতে সেই ধরণের আপডেট করতে হবে। একটি বিমূর্ত বেস ক্লাস এবং একটি ইন্টারফেসের মধ্যে নির্বাচন করা সময়ের সাথে সাথে আপনার বিমূর্ততাগুলিকে কীভাবে সেরা সমর্থন করবে তা একটি প্রশ্ন। ইন্টারফেসগুলি স্থির হয়েছে: আপনি কোনও ধরনের কার্যকারিতা সেট করার জন্য একটি চুক্তি হিসাবে একটি ইন্টারফেস প্রকাশ করেন। বেস ক্লাসগুলি সময়ের সাথে বাড়ানো যেতে পারে। এই এক্সটেনশনগুলি প্রতিটি উত্পন্ন শ্রেণীর অংশ হয়ে যায়। দুটি মডেল একাধিক ইন্টারফেস সমর্থন করার সময় বাস্তবায়ন কোড পুনরায় ব্যবহার করতে মিশ্রিত করা যেতে পারে। " যে কোনও ধরণের প্রয়োগ করতে পারে এমন একটি কার্যকারিতার সংস্থার জন্য আপনি চুক্তি হিসাবে একটি ইন্টারফেস প্রকাশ করেন। বেস ক্লাসগুলি সময়ের সাথে বাড়ানো যেতে পারে। এই এক্সটেনশনগুলি প্রতিটি উত্পন্ন শ্রেণীর অংশ হয়ে যায়। দুটি মডেল একাধিক ইন্টারফেস সমর্থন করার সময় বাস্তবায়ন কোড পুনরায় ব্যবহার করতে মিশ্রিত করা যেতে পারে। " যে কোনও ধরণের প্রয়োগ করতে পারে এমন একটি কার্যকারিতার সংস্থার জন্য আপনি চুক্তি হিসাবে একটি ইন্টারফেস প্রকাশ করেন। বেস ক্লাসগুলি সময়ের সাথে বাড়ানো যেতে পারে। এই এক্সটেনশনগুলি প্রতিটি উত্পন্ন শ্রেণীর অংশ হয়ে যায়। দুটি মডেল একাধিক ইন্টারফেস সমর্থন করার সময় বাস্তবায়ন কোড পুনরায় ব্যবহার করতে মিশ্রিত করা যেতে পারে। "
"কোডিং ইন্টারফেসগুলি অন্যান্য বিকাশকারীদের বেস বর্গের ধরণের কোডিংয়ের চেয়ে আরও নমনীয়তা সরবরাহ করে।"
"কোনও শ্রেণীর জন্য API গুলি সংজ্ঞায়িত করতে ইন্টারফেস ব্যবহার করা আরও নমনীয়তা সরবরাহ করে।"
"যখন আপনার ধরণের শ্রেণীর ধরণের হিসাবে বৈশিষ্ট্যগুলি প্রকাশ করা হয়, তখন এটি পুরো শ্রেণি ইন্টারফেসটিকে সেই শ্রেণীর কাছে উন্মুক্ত করে দেয় interface ইন্টারফেস ব্যবহার করে, আপনি ক্লায়েন্টদের ব্যবহার করতে চান এমন পদ্ধতি এবং বৈশিষ্ট্যগুলি কেবল প্রকাশ করতে বেছে নিতে পারেন" "
"বেস ক্লাসগুলি সম্পর্কিত কংক্রিটের ধরণের সাধারণ আচরণগুলি বর্ণনা করে এবং প্রয়োগ করে Inter ইন্টারফেসগুলি কার্যবিধিত্বের পারমাণবিক টুকরো বর্ণনা করে যা সম্পর্কহীন কংক্রিটের ধরণেরগুলি প্রয়োগ করতে পারে Both উভয়েরই রয়েছে তাদের স্থান you শ্রেণিগুলি আপনার তৈরি প্রকারগুলি সংজ্ঞায়িত করে Inter ইন্টারফেসগুলি সেই ধরণের আচরণকে কার্যকারিতার অংশ হিসাবে বর্ণনা করে। আপনি যদি পার্থক্যগুলি বুঝতে পারেন তবে আপনি আরও অভিব্যক্তিপূর্ণ ডিজাইন তৈরি করবেন যা পরিবর্তনের ক্ষেত্রে আরও স্বচ্ছল। সম্পর্কিত ধরণের সংজ্ঞা দেওয়ার জন্য শ্রেণীর শ্রেণিবিন্যাস ব্যবহার করুন those এই ধরণের জুড়ে প্রয়োগ করা ইন্টারফেসগুলি ব্যবহার করে কার্যকারিতা প্রকাশ করুন। "