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();}Exemple d’utilisation dans le monde réel
Section intitulée « Exemple d’utilisation dans le monde réel »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.