বিবেচনা করুন তা ক্ষমতার বিভিন্ন সমন্বয় সঙ্গে বস্তুর সংগ্রহ সাধারণ হবে, এবং কোড উপর একটি কর্ম সম্পাদন করতে চাইতে পারেন কিনা , যে সমর্থন এটা একটি সংগ্রহ মধ্যে, সেগুলি । যদি তা হয়, এবং যদি কিছু পদক্ষেপের জন্য কার্যকর সমর্থন না করে এমন বস্তুর জন্য যদি কোনও বুদ্ধিমান "ডিফল্ট আচরণ" হয়ে থাকে, তবে কেবল কার্যকরভাবে আচরণ করতে পারে এমনগুলি নয়, বিভিন্ন শ্রেণীর দ্বারা ইন্টারফেস প্রয়োগ করা সহায়ক হতে পারে।
উদাহরণস্বরূপ, ধরুন যে কয়েকটি ধরণের প্রাণীটিরই Woozles থাকতে পারে এবং কেউ চান যে এই জাতীয় প্রাণীর একটি NumerOfWoozles
সম্পত্তি রয়েছে। যদি এই ধরণের সম্পত্তি এমন একটি ইন্টারফেসে থাকে যা কেবলমাত্র এমন প্রাণী দ্বারা প্রয়োগ করা হয়েছিল যা ভুজলস থাকতে পারে, তবে যে কোডটি মিশ্র প্রকারের প্রাণীর সংকলনের দ্বারা প্রাপ্ত উজলসের মোট সংখ্যা খুঁজে পেতে চেয়েছিল তার মতো কিছু বলতে হবে:
int total = 0;
foreach (object it in creatures)
{
IWoozleCountable w = trycast(it, IWoozleCountable);
if (w != null) total += w.WoozleCount;
}
তবে, যদি উজলকাউন্টটি ক্রিচার / আইক্রিচারের সদস্য হন, যদিও কম সাব টাইপগুলি ক্রিশের ডিফল্ট উজলকাউন্ট বাস্তবায়নকে সর্বদা শুন্য করে দেয়, কোডটি এখানে সরল করা যেতে পারে:
int total = 0;
foreach (ICreature it in creatures)
total += it.WoozleCount;
যদিও কিছু লোক প্রত্যেক প্রকৃতির এমন একটি উজলকাউন্ট সম্পত্তি বাস্তবায়িত করার ধারণাটি সম্পর্কে ধারণা পোষণ করতে পারে যা সম্পত্তি কেবলমাত্র কয়েকটি উপ-প্রকারের জন্য কার্যকর, তবে সম্পত্তিটি সমস্ত প্রকারের জন্য অর্থবহ হবে, এই জাতীয় ধরণের আইটেমগুলির সাথে এটি কার্যকর হবে কি না, এবং আমি "কিচেন সিঙ্ক" ইন্টারফেসটিকে ট্রাইকাস্ট অপারেটরের চেয়ে কোড গন্ধের চেয়ে কম বলে বিবেচনা করব।
IEnumerable
,IEquatable
ইত্যাদি