Abstract Factory
Contexte : Fournir une interface pour créer des familles d’objets liés ou dépendants sans spécifier leurs classes concrètes.
public interface IButton { void Render(); }public interface ITextBox { void Render(); }
public class WinButton : IButton { public void Render() => Console.WriteLine("Win Button"); }public class WinTextBox : ITextBox { public void Render() => Console.WriteLine("Win TextBox"); }
public interface IGUIFactory{ IButton CreateButton(); ITextBox CreateTextBox();}
public class WinFactory : IGUIFactory{ public IButton CreateButton() => new WinButton(); public ITextBox CreateTextBox() => new WinTextBox();}
// UsageIGUIFactory factory = new WinFactory();IButton btn = factory.CreateButton();btn.Render();Exemple d’utilisation dans le monde réel
Section intitulée « Exemple d’utilisation dans le monde réel »Frameworks UI multiplateformes : Abstract Factory crée des contrôles spécifiques à la plateforme (boutons, zones de texte, fenêtres) sans changer le code client. Pour Windows, utilisez WinFactory ; pour macOS, MacFactory.
Exemple : Dans .NET, System.Data.Common.DbProviderFactory est une fabrique abstraite. Les fabriques concrètes comme SqlClientFactory créent DbConnection, DbCommand, DbDataAdapter pour des bases de données spécifiques.