Ho una classe: A
questo è un composto di un numero di classi più piccole B
, C
e D
.
B
, C
E D
implementare interfacce IB
, IC
e ID
rispettivamente.
Dal momento che A
supporta tutte le funzionalità di B
, C
e D
, A
attrezzi IB
, IC
e ID
così, ma questo purtroppo porta ad un sacco di ri-instradamento per l'attuazione delA
Così:
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;}
}
}
C'è un modo per sbarazzarsi di uno qualsiasi di questo reindirizzamento del boilerplate A
? B
, C
E D
tutto implementare funzionalità diverse ma comuni, e simili che A
implementa IB
, IC
e ID
perché significa posso passare in A
sé come dipendenza corrispondenza tali interfacce, e non devono esporre i metodi di supporto interno.
A
attrezzo IB
, IC
ed ID
è più sensato scrivere Person.Walk()
al contrario Person.WalkHelper.Walk()
, ad esempio.