2012-10-11 122 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

当我需要紧密和松散耦合?

你应该总是争取一个松耦合的设计。可能存在需要紧密耦合的边界情况,或者您继承了一个拥有它的项目,但我认为您的口头禅应该在设计和开发时考虑到可测试性,这意味着低耦合。我还没有为一个过于“松散耦合”的项目开展工作,但肯定会对那些“紧密耦合”的项目起作用,而后者并没有乐趣。