Tôi có một lớp: Ađó là tổng hợp của một số lớp nhỏ hơn B, Cvà D.
B, CVà Dthực hiện các giao diện IB, ICvà IDtương ứng.
Kể từ khi Ahỗ trợ tất cả các chức năng của B, Cvà D, Adụng cụ IB, ICvà IDlà 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, CVà Dtất cả thực hiện chức năng khác nhau nhưng phổ biến, và tôi như thế Adụng cụ IB, ICvà IDbởi vì nó có nghĩa là tôi có thể vượt qua trong Achí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.
Athực hiện IB, ICvà IDnó cảm thấy hợp lý hơn để viết Person.Walk()trái ngược với Person.WalkHelper.Walk(), ví dụ.