আমাকে এটিও শিখানো হয়েছে এবং আমি যেখানে সম্ভব সেখানে ইন্টারফেসগুলি পছন্দ করি (অবশ্যই আমি এখনও উত্তরাধিকার ব্যবহার করি যেখানে বোধ হয়)।
আমি মনে করি এটির একটি জিনিস নির্দিষ্ট প্রয়োগগুলি থেকে আপনার কোডটি দ্বিগুণ করে। বলুন আমার কাছে কনসোল রাইটার নামে একটি ক্লাস রয়েছে এবং এটি কিছু লেখার জন্য একটি পদ্ধতিতে পাস হয়ে যায় এবং এটি এটি কনসোলে লিখে দেয়। এখন আসুন আমি জিইউআই উইন্ডোতে মুদ্রণ করতে চাই say ভাল এখন আমাকে হয় পদ্ধতিটি পরিবর্তন করতে হবে বা একটি নতুন লিখতে হবে যা GUIWriter কে প্যারামিটার হিসাবে গ্রহণ করবে। যদি আমি একটি IWriter ইন্টারফেস সংজ্ঞায়িত করে শুরু করি এবং পদ্ধতিটি IWriter এ গ্রহণ করি আমি কনসোল রাইটার দিয়ে শুরু করতে পারতাম (যা IWriter ইন্টারফেস প্রয়োগ করবে) এবং পরে GUIWriter নামে একটি নতুন ক্লাস লিখি (যা IWriter ইন্টারফেস প্রয়োগ করে) এবং তারপরে আমি শুধু ক্লাস পাস হচ্ছে সুইচ আউট করতে হবে।
আরেকটি জিনিস (যা সি # এর ক্ষেত্রে সত্য, জাভা সম্পর্কে নিশ্চিত নয়) এটি হ'ল আপনি কেবল 1 শ্রেণি প্রসারিত করতে পারেন তবে অনেকগুলি ইন্টারফেস প্রয়োগ করতে পারেন। বলুন যে আমার শিক্ষক, ম্যাথটিচার এবং হিস্ট্রি টিচার নামে একটি ক্লাস ছিল। এখন ম্যাথটিচার এবং হিস্ট্রি টিচার টিচারের কাছ থেকে প্রসারিত কিন্তু আমরা যদি এমন ক্লাস চাই যা ম্যাথটিচার এবং হিস্ট্রি টিচার উভয়কেই প্রতিনিধিত্ব করে। আপনি একসাথে একবারে এটি করতে পারলে একাধিক ক্লাস থেকে উত্তরাধিকারী হওয়ার চেষ্টা করার সময় এটি বেশ অগোছালো হয়ে উঠতে পারে (উপায় আছে তবে সেগুলি একেবারে অনুকূল নয়)। ইন্টারফেসের সাহায্যে আপনার কাছে আইএমথটিচার এবং আইহিসটরি টিচার নামে দুটি ইন্টারফেস থাকতে পারে এবং তারপরে একটি ক্লাস থাকে যা শিক্ষকের কাছ থেকে প্রসারিত হয় এবং সেই দুটি ইন্টারফেস প্রয়োগ করে।
ইন্টারফেস ব্যবহার করে একটি খারাপ দিক হ'ল আমি কখনও কখনও লোককে নকল কোড দেখতে পাই (যেহেতু আপনাকে প্রতিটি শ্রেণীর জন্য ইন্টারফেসটি প্রয়োগ করে প্রয়োগ করতে হবে) তবে এই সমস্যার একটি পরিষ্কার সমাধান রয়েছে, উদাহরণস্বরূপ প্রতিনিধিদের মতো জিনিসগুলির ব্যবহার (নিশ্চিত নয়) জাভা এর সমতুল্য কি)।
উত্তরাধিকারের উপর ইন্টারফেস ব্যবহার করার বৃহত্তম কারণটি প্রয়োগের কোডটি ডিকোপলিং মনে হয় না তবে উত্তরাধিকার যে এটি এখনও খুব কার্যকর তাই মন্দ বলে মনে করবেন না।