Tôi có một lớp: A
đó là tổng hợp của một số lớp nhỏ hơn B
, C
và D
.
B
, C
Và D
thực hiện các giao diện IB
, IC
và ID
tương ứng.
Kể từ khi A
hỗ trợ tất cả các chức năng của B
, C
và D
, A
dụng cụ IB
, IC
và ID
là tốt, nhưng điều này không may dẫn đến rất nhiều tái định tuyến trong việc thực hiệnA
Thích như vậy:
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ó cách nào để loại bỏ bất kỳ chuyển hướng nồi hơi này trong A
? B
, C
Và D
tất cả thực hiện chức năng khác nhau nhưng phổ biến, và tôi như thế A
dụng cụ IB
, IC
và ID
bởi vì nó có nghĩa là tôi có thể vượt qua trong A
chính nó như là một sự phụ thuộc phù hợp với những giao diện, và không cần phải tiếp xúc với các phương pháp helper bên trong.
A
thực hiện IB
, IC
và ID
nó cảm thấy hợp lý hơn để viết Person.Walk()
trái ngược với Person.WalkHelper.Walk()
, ví dụ.