У меня есть класс: Aэто состав из нескольких меньших классов B, Cи D.
B, CИ Dреализовывать интерфейсы IB, ICи IDсоответственно.
Так как Aподдерживает все функциональные возможности B, Cи D, Aреализует IB, ICи IDтакже, но это, к сожалению, приводит к большой перенаправления в реализацииA
Вот так:
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;}
}
}
Есть ли способ избавиться от какого-либо перенаправления в этом шаблоне A? B, CИ Dвсе реализовать разные , но общие функциональные возможности , и мне нравится , что Aорудия IB, ICи IDпотому , что это означает , что я могу передать в Aсебя как зависимость сопоставления этих интерфейсов, и не должен подвергать внутренние вспомогательные методы.
Aреализовать IB, ICи IDон чувствует себя более разумно писать Person.Walk()в противоположность Person.WalkHelper.Walk(), например.