我知道松散耦合和紧密耦合的信息。但我暂停什么时候可以决定在哪里和什么时候使用?我不明白什么时候我需要松散耦合和紧密耦合?
请看: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 :(得分:5)
请记住, Gang of Four模式是在依赖注入之前诞生的,它被提及为松散耦合。
因此,您展示的示例适配器模式是尝试显示模式如何工作,而不关心松散耦合。
如果您希望代码可测试且可更换,则应使用松耦合,例如:
class CustomerService
{
private ICustomerRepository _customerRepository;
public CustomerService(ICustomerRepository customerRepository)
{
_customerRepository = customerRepository;
}
}
要通过构造函数注入customerRepository
,您可以轻松地模拟ICustomerRepository
以进行单元测试。
答案 1 :(得分:2)
通常,您希望以松散耦合为目标,这意味着在可能的情况下使用抽象。
当您无法使用适当的抽象替换类(Adaptee)时,适配器模式将帮助您执行此操作。
适配器是问题Adaptee类的包装器。适配器派生自抽象的Target类,调用代码应该只处理Target,因此它可以保持松散耦合。
答案 2 :(得分:1)
这将帮助您理解它们之间的区别,但是当您需要松散耦合的类时,它在很大程度上取决于您的应用程序的设计。 What is the difference between loose coupling and tight coupling in the object oriented paradigm?
答案 3 :(得分:1)
当我需要紧密松散的耦合时?
你应该始终努力寻求松散耦合的设计。可能存在需要紧耦合的边缘情况,或者您继承了具有它的项目,但我认为您的口头禅应该在设计和开发时考虑到可测试性,这意味着低耦合。我还没有完成一个太“松散耦合”的项目,但肯定是在那些“紧密耦合”的项目上工作,后者并不好玩。
答案 4 :(得分:0)
最好采用松散耦合设计的生产代码。这使您的代码易于独立于相关组件进行测试,并且可以轻松替换代码所使用的组件。
有关详细说明,请访问http://rangahc.blogspot.com/2015/05/difference-between-tight-coupling-and-loose-coupling.html