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