オブジェクト指向パラダイムにおける疎結合と密結合の正確な違いを説明できる人はいますか?
ベストアンサー1
密結合とは、クラスのグループが互いに高度に依存している場合を指します。
このシナリオは、クラスがあまりにも多くの責任を引き受けている場合、または 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)
{
}
}
疎結合の例:
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 implements IDatabase
{
public void AddRow(string Table, string Value)
{
}
}
もう一つの例ここ。