J'ai une classe: A
qui est un composé d'un certain nombre de classes plus petites, B
, C
et D
.
B
, C
Et D
mettre en œuvre des interfaces IB
, IC
et ID
respectivement.
Depuis A
prend en charge toutes les fonctionnalités de B
, C
et D
, A
implémente IB
, IC
ainsi ID
que, mais cela conduit malheureusement à beaucoup de réacheminement dans la mise en œuvre deA
Ainsi:
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;}
}
}
Existe-t-il un moyen de se débarrasser de cette redirection de passe-partout A
? B
, C
et D
tous implémentent des fonctionnalités différentes mais communes, et j'aime que cela A
implémente IB
, IC
et ID
parce que cela signifie que je peux passer en A
soi en tant que dépendance correspondant à ces interfaces, et ne pas avoir à exposer les méthodes d'assistance internes.
A
mise en œuvre IB
, IC
et ID
c'est qu'il semble plus sensé d'écrire Person.Walk()
plutôt que Person.WalkHelper.Walk()
, par exemple.