나는 수업이 : A
작은 클래스의 수의 합성이다 B
, C
하고 D
.
B
, C
및 D
인터페이스를 구현 IB
, IC
및 ID
각각.
이후 A
의 모든 기능 지원 B
, C
및 D
, A
구현 IB
, IC
그리고 ID
뿐만 아니라,하지만 많은이 불행하게도 리드의 구현에 재 라우팅A
이렇게 :
interface IB
{
int Foo {get;}
}
public class B : IB
{
public int Foo {get {return 5;}}
}
interface IC
{
void Bar();
}
public class C : IC
{
public void Bar()
{
}
}
interface ID
{
string Bash{get; set;}
}
public class D: ID
{
public string Bash {get;set;}
}
class A : IB, IC, ID
{
private B b = new B();
private C c = new C();
private D d = new D();
public int Foo {get {return b.Foo}}
public A(string bash)
{
Bash = bash;
}
public void Bar()
{
c.Bar();
}
public string Bash
{
get {return d.Bash;}
set {d.Bash = value;}
}
}
이 상용구 리디렉션을 제거하는 방법이 A
있습니까? B
, C
및 D
모든 다르지만 일반적인 기능을 구현하고, I처럼 A
구현 IB
, IC
및 ID
그 의미 때문에 전달할 수있는 A
이러한 인터페이스 일치 의존성 자체 및 내부 헬퍼 메소드를 노출 할 필요가 없다.
A
구현을 IB
, IC
그리고 ID
그것을 쓰기에 더 분별있는 느낌입니다 Person.Walk()
반대로 Person.WalkHelper.Walk()
예를 들어,.