2012-10-11 155 views
1

我知道鬆耦合和緊密耦合的信息。但是,我暫停何時可以決定何時何地使用?我不明白我什麼時候需要鬆散耦合和緊密耦合?我什麼時候需要緊耦合和鬆耦合?

看看請:http://www.dofactory.com/Patterns/PatternAdapter.aspx#_self1

如果你看看適配器類:


    /// 
    /// The 'Adapter' class 
    /// 
    class Adapter : Target 
    { 
    private Adaptee _adaptee = new Adaptee(); 

    public override void Request() 
    { 
     // Possibly do some other work 
     // and then call SpecificRequest 
     _adaptee.SpecificRequest(); 
    } 
    } 

以上使用像緊密耦合!我認爲緊密耦合是不好的用法。但適配器模式使用緊密耦合。當我需要緊密和鬆散耦合?

+0

緊耦合類變成一個不好的設計,如果你的應用程序的增長作爲企業級應用程序。要了解您可以通過微軟引用PRISM(或複合應用程序塊)。這是一種使用鬆散耦合類的設計。 –

回答

4

記住剛四種模式分別之前被提到了很多的鬆耦合依賴注入誕生。

因此,您展示的示例適配器模式是嘗試顯示模式如何工作,而不關心多麼鬆散的耦合。

如果您希望您的代碼可測試性和可更換的,鬆耦合應使用,例如:

class CustomerService 
{ 
    private ICustomerRepository _customerRepository; 
    public CustomerService(ICustomerRepository customerRepository) 
    { 
     _customerRepository = customerRepository; 
    } 
} 

要注入可以通過構造customerRepository,它讓您輕鬆地爲了做單元測試嘲笑ICustomerRepository

2

一般情況下,你要瞄準鬆耦合,這意味着與抽象的工作儘可能。

適配器模式將幫助你做到這一點的時候,你不能輕易用適當的抽象替換類(適配者)。

適配器是解決該問題適配者類的包裝。適配器派生自抽象的Target類,並且調用代碼應該只處理目標,所以它可以保持鬆散耦合。

1

當我需要緊密和鬆散耦合?

你應該總是爭取一個鬆耦合的設計。可能存在需要緊密耦合的邊界情況,或者您繼承了一個擁有它的項目,但我認爲您的口頭禪應該在設計和開發時考慮到可測試性,這意味着低耦合。我還沒有爲一個過於「鬆散耦合」的項目開展工作,但肯定會對那些「緊密耦合」的項目起作用,而後者並沒有樂趣。