Aller au contenu

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();
}
// Usage
IGUIFactory factory = new WinFactory();
IButton btn = factory.CreateButton();
btn.Render();

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.