Mam klasę: Ajest to połączenie wielu mniejszych klas B, Ci D.
B, CI Dwdrożyć interfejsów IB, ICoraz IDodpowiednio.
Ponieważ Aobsługuje wszystkie funkcje B, Ci D, Anarzędzi IB, ICa IDtakże, ale to niestety prowadzi do wielu re-routing w realizacjiA
Tak jak:
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;}
}
}
Czy istnieje sposób, aby pozbyć się przekierowania z płyty A? B, Ci Dwszystkie implementują różne, ale wspólne funkcje, i podoba mi się to Aimplementacja IB, ICa IDponieważ oznacza to, że mogę przekazać Asamą siebie jako zależność pasującą do tych interfejsów i nie muszę ujawniać wewnętrznych metod pomocniczych.
Awdrożyć IB, ICa IDto wydaje się bardziej sensowne napisać Person.Walk()w przeciwieństwie do Person.WalkHelper.Walk(), na przykład.