87 votes

Quelle est la différence entre le couplage lâche et couplage serré dans le paradigme orienté objet ?

<p>Peut tout décrire précisément la différence entre le couplage lâche et couplage serré dans le paradigme orienté objet ?</p>

123voto

jonathanconway Points 8307

Le couplage est alors qu'un groupe de classes sont très dépendants l'un de l'autre.

Ce scénario se pose lorsqu'une classe suppose trop de responsabilités, ou lorsque l'une des préoccupations est étalé sur de nombreuses classes plutôt que d'avoir sa propre classe.

Le couplage est réalisé par une conception qui favorise l'unique responsabilité et la séparation des préoccupations.

Un loosely-coupled classe peut être consommé et testés de façon indépendante des autres (en béton) des classes.

Les Interfaces sont un outil puissant à utiliser pour le découplage. Les Classes peuvent communiquer par l'intermédiaire d'interfaces plutôt que d'autres classes de béton, et de toute classe peut être à l'autre bout de la communication tout simplement par la mise en œuvre de l'interface.

Exemple de couplage:

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)
    {
    }
}

Exemple de couplage lâche:

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)
    {
    }
}

Un autre exemple ici.

28voto

Don Kirkby Points 12671

Dans la conception orientée objet, le montant de couplage se réfère à la façon dont beaucoup de la conception d'une classe dépend de la conception d'une autre classe. En d'autres termes, combien de fois avez-changement de classe d'Une force liés à des changements dans la classe B? Le couplage signifie que les deux classes changent souvent ensemble, couplage lâche signifie qu'ils sont pour la plupart indépendants. En général, le couplage est recommandé parce que c'est plus facile à tester et à maintenir.

Vous pouvez trouver ce document par Martin Fowler (PDF) utile.

7voto

Jom George Points 609

En général, le Couplage est mauvais, mais la plupart du temps, parce qu'il réduit la flexibilité et la réutilisation de code, il apporte des modifications beaucoup plus difficile, il empêche la testabilité etc.

Étroitement associée de l'Objet est un objet nécessaire à connaître un peu les uns des autres et sont généralement très dépendants les uns des autres interfaces. Modification d'un objet dans un étroitement associée application nécessite souvent des modifications à un certain nombre d'autres objets, Dans petite application, nous pouvons facilement identifier les changements et il y a moins de chance de rater quoi que ce soit. Mais dans les grandes applications de ces inter-dépendances ne sont pas toujours connues par tous les programmeur ou la chance est là pour miss changements. Mais chaque ensemble de couplage lâche les objets ne sont pas dépendants des autres.

En bref, nous pouvons dire, couplage lâche est un objectif de conception qui vise à réduire les interdépendances entre les composants d'un système dans le but de réduire le risque que des changements dans un composant nécessitera des changements dans n'importe quel autre composant. Le couplage est beaucoup plus générique concept destiné à accroître la flexibilité d'un système, de le rendre plus facile à gérer, et rendre l'ensemble du cadre plus "stable".

Le couplage se réfère au degré de connaissance directe qu'un élément a d'un autre. nous pouvons dire un exemple: A et B, de B à modifier son comportement uniquement lors d'Un changement de son comportement. Un système faiblement couplé peut être facilement décomposer en éléments définissables.

4voto

Amit Kumar Points 11

La façon dont je le comprends, il est, étroitement associée de l'architecture ne fournissent pas beaucoup de flexibilité pour le changement par rapport à l'architecture faiblement couplée.

Mais dans le cas d'un couplage lâche les architectures, les formats de message ou de plates-formes d'exploitation ou de la refonte de la logique d'entreprise n'a pas d'incidence sur l'autre extrémité. Si le système est pris vers le bas pour un revamp, bien sûr, l'autre fin ne sera pas en mesure d'accéder au service depuis un moment mais d'autres que, l'année précédente, la fin peut reprendre l'échange de messages de ce qu'il était avant la refonte.

3voto

Ahmed_Gad Points 31
<p>Lorsque deux objets sont faiblement couplés, ils peuvent interagir, mais ont très peu de connaissances de l’autre.</p> <p>Faiblement couplés dessins permettent de construire des systèmes OO flexibles capable de gérer le changement.</p> <p>Observeur design pattern est un bon exemple pour faire des classes faiblement couplés, vous pouvez jeter un oeil là-dessus dans <a href="http://en.wikipedia.org/wiki/Observer_pattern" rel="nofollow">Wikipedia</a>.</p>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: