빈 인터페이스는 일반적으로 내가 알 수있는 한, 특히 언어와 같은 속성이 지원되는 곳에서는 나쁜 습관으로 간주됩니다.
그러나 다른 인터페이스에서 상속 된 인터페이스는 '비어있는'것으로 간주됩니까?
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();
지역 변수 와 같은 일부 구문은 좋을 것입니다 (Konrad의 답변에서 제기 된 좋은 점을 무시하면)