Tengo una clase: A
es un compuesto de varias clases más pequeñas B
, C
y D
.
B
, C
Y D
poner en práctica las interfaces IB
, IC
y ID
respectivamente.
Dado que A
admite toda la funcionalidad de B
, C
e D
, A
implementa IB
, IC
y ID
también, pero desafortunadamente esto lleva a una gran cantidad de cambios de ruta en la implementación deA
Al igual que:
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;}
}
}
¿Hay alguna manera de deshacerse de esta redirección repetitiva A
? B
, C
y D
todos implementan funcionalidades diferentes pero comunes, y me gusta que A
implemente IB
, IC
y ID
porque significa que puedo pasar por A
sí mismo como una dependencia que coincide con esas interfaces, y no tengo que exponer los métodos auxiliares internos.
A
implementar IB
, IC
y ID
es que es más sensato escribir Person.Walk()
en lugar de Person.WalkHelper.Walk()
, por ejemplo.