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