Mam klasę: A
jest to połączenie wielu mniejszych klas B
, C
i D
.
B
, C
I D
wdrożyć interfejsów IB
, IC
oraz ID
odpowiednio.
Ponieważ A
obsługuje wszystkie funkcje B
, C
i D
, A
narzędzi IB
, IC
a ID
takż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
, C
i D
wszystkie implementują różne, ale wspólne funkcje, i podoba mi się to A
implementacja IB
, IC
a ID
ponieważ oznacza to, że mogę przekazać A
samą siebie jako zależność pasującą do tych interfejsów i nie muszę ujawniać wewnętrznych metod pomocniczych.
A
wdrożyć IB
, IC
a ID
to wydaje się bardziej sensowne napisać Person.Walk()
w przeciwieństwie do Person.WalkHelper.Walk()
, na przykład.