मेरे पास एक वर्ग है: 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()।