Aller au contenu

Bridge

Contexte : Découpler une abstraction de son implémentation afin que les deux puissent varier indépendamment.

public interface IImplementation
{
void OperationImpl();
}
public class ConcreteImplA : IImplementation
{
public void OperationImpl() => Console.WriteLine("Impl A");
}
public abstract class Abstraction
{
protected IImplementation _impl;
protected Abstraction(IImplementation impl) => _impl = impl;
public abstract void Operation();
}
public class RefinedAbstraction : Abstraction
{
public RefinedAbstraction(IImplementation impl) : base(impl) { }
public override void Operation() => _impl.OperationImpl();
}

Pilotes de périphériques et télécommandes : Une abstraction de télécommande peut fonctionner avec différentes implémentations de périphérique (TV, radio, projecteur). L’ajout d’une nouvelle télécommande (par exemple, vocale) n’affecte pas les classes de périphérique.

Exemple : Dans .NET, Stream est une abstraction ; FileStream, MemoryStream sont des implémentations. GZipStream est une autre abstraction qui utilise une implémentation de flux – pattern Bridge.