У меня есть класс: 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()
, например.