gpt4 book ai didi

oop - 与组合相关的松散耦合

转载 作者:行者123 更新时间:2023-12-02 08:28:03 29 4
gpt4 key购买 nike

在搜索了与紧耦合相关的不同论坛之后(当一组类彼此高度依赖时)例1

 class CustomerRepository
{
private readonly Database database;

public CustomerRepository(Database database)
{
this.database = database;
}

public void Add(string CustomerName)
{
database.AddRow("Customer", CustomerName);
}
}
class Database
{
public void AddRow(string Table, string Value)
{
}
}

上面的 CustomerRepository 类依赖于 Database 类,所以它们是紧密耦合的。我认为这个类也是 Compostion 的一个例子,然后我搜索了松散耦合,所以改变了上面的类,从而消除了紧耦合依赖。例2

   class CustomerRepository
{
private readonly IDatabase database;

public CustomerRepository(IDatabase database)
{
this.database = database;
}

public void Add(string CustomerName)
{
database.AddRow("Customer", CustomerName);
}
}

interface IDatabase
{
void AddRow(string Table, string Value);
}

class Database : IDatabase
{
public void AddRow(string Table, string Value)
{
}
}

我搜索过组合支持松散耦合,现在我的问题是 example1 是如何紧密耦合的,因为它是基于组合的?其次,松散耦合和组合之间的关系是什么?

任何帮助将不胜感激。

最佳答案

你所拥有的并不是真正的紧密耦合。紧耦合是这样的:

class CustomerRepository {
private readonly Database database;

public CustomerRepository() {
this.database = new Database;
}
}

该类对特定的 Database 类具有硬编码依赖性,无法替代。这是真正的紧耦合。

您展示的组合示例已经是松散耦合的,因为完全有可能用任何其他 Database 继承类替换注入(inject)到构造函数中的依赖项。

你的第二个例子耦合更松散,因为它使用接口(interface)而不是具体类;但这是一个次要的细节。

关于oop - 与组合相关的松散耦合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30207230/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com