2009-12-13 139 views
1

我在想,如果是有意義的有物體從依賴注射 例如C#依賴注入樣品

public interface IPeople 
    { 
     string Name { get; set; } 
     int Age { get; set; } 
     string LastName { get; set; } 

    } 

public class CPeople : IPeople 
    {..implemented IPeople Methods..} 

這樣,我只需要實現一個接口打交道時實現該接口的類繼承地點。我不確定這是否會被認爲是鬆散耦合的。

public class Dad : CPeople 
    { 
    } 



public class Mom : CPeople 
    { 
    } 

讓我的控制器中我將不得不

public class Parent 

{ 

    IPeople objMom; 
    IPeople objDad; 
    Parents m_Parent; 

    public void factoryMethod() 
    { 

     objMom = new Mom(); 
     objMom.Age = 32; 
     objMom.Name = "Jane"; 
     objMom.LastName = "Doe"; 

     objDad = new Dad(); 
     objDad.Age = 25; 
     objDad.Name = "John"; 
     objDad.LastName = "Doe"; 

     m_Parent = new Parents(objMom,objDad); 

    } 
    public override string ToString() 
    {      
     return m_Parent.Mom.Name + " " + m_Parent.Mom.LastName + " is " + m_Parent.Mom.Age + " years of age, " + m_Parent.Dad.Name + " " + m_Parent.Dad.LastName + " aged " + m_Parent.Dad.Age.ToString(); 
    } 
+13

請請,請不要在C#中使用匈牙利符號。它沒有任何意義,因爲*所有*都是類和對象,只是看着它而傷害。 – Konamiman 2009-12-13 20:16:34

+0

如果你的媽媽和爸爸課程是相同的,爲什麼同時爲它創建兩個單獨的課程?你可以通過讓一個類使用bool/enum來表達它是否是母親或父親來實現。也許你的例子太簡單了,沒有意義? – 2009-12-13 20:17:08

+1

@Konamiman:有時候匈牙利符號很有用(應用程序匈牙利語與匈牙利語系統 - http://en.wikipedia.org/wiki/Hungarian_notation#Systems_vs._Apps_Hungarian)。我同意,但這不是其中之一。 – 2009-12-13 20:20:30

回答

2

是的,這被認爲是鬆耦合的,因爲控制器不需要有超越的接口定義內對象的任何知識。

如果你關心媽媽/爸爸是否分開,你可以實現那些接口(即使它們是空的),並使用它們來確保父母既是IMOM又是IDad。