খালি ইন্টারফেসগুলি সাধারণত খারাপ অনুশীলন হিসাবে বিবেচনা করা হয়, যতদূর আমি বলতে পারি - বিশেষত যেখানে বৈশিষ্ট্যের মতো জিনিসগুলি ভাষা দ্বারা সমর্থিত।
তবে অন্য ইন্টারফেস থেকে উত্তরাধিকার সূত্রে যদি কোনও ইন্টারফেসকে 'খালি' হিসাবে বিবেচনা করা হয়?
interface I1 { ... }
interface I2 { ... } //unrelated to I1
interface I3
: I1, I2
{
// empty body
}
যে কোনও কিছু প্রয়োগ করে I3
তা বাস্তবায়ন করতে হবে I1
এবং I2
, উত্তরাধিকারসূত্রে বিভিন্ন শ্রেণীর বস্তুগুলি I3
পরস্পরের পরিবর্তে (নীচে দেখুন) ব্যবহার করা যেতে পারে, তাই I3
খালি কল করা কি ঠিক ? যদি তাই হয় তবে এটির জন্য আর্কিটেকচারের আরও ভাল উপায় কী হতে পারে?
// with I3 interface
class A : I3 { ... }
class B : I3 { ... }
class Test {
void foo() {
I3 something = new A();
something = new B();
something.SomeI1Function();
something.SomeI2Function();
}
}
// without I3 interface
class A : I1, I2 { ... }
class B : I1, I2 { ... }
class Test {
void foo() {
I1 something = new A();
something = new B();
something.SomeI1Function();
something.SomeI2Function(); // we can't do this without casting first
}
}
foo
? (উত্তরটি যদি "হ্যাঁ" হয় তবে এগিয়ে যান!)
var : I1, I2 something = new A();
স্থানীয় ভেরিয়েবলগুলির মতো কিছু বাক্য গঠন সুন্দর হবে (যদি আমরা কনরাদের উত্তরে উত্থাপিত ভাল পয়েন্টগুলি উপেক্ষা করি)