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