Il supporte l'ajout de nouveaux types de produits et leur familiesExample: interface publique IComputerFactory {ICPU createCPU (); IMemory createMemory ();} public interface ICPU {string GetCPUString ();} public interface IMemory {string GetMemoryString ();} //Béton CPUA de classe CPUApublic: ICPU {public string GetCPUString () {return "CPUA"; }} //Béton classe MemoryApublic MemoryA: IMemory {GetMemoryString public string () {return "MemoryA"; }} public class ComputerFactoryA: IComputerFactory {ICPU publique createCPU () {return new CPUA (); } Public IMemory createMemory () {return new MemoryA (); }} public class Client {//ceci est une méthode de modèle; ne dépend pas de l'usine de béton //et la chaîne statique classes concrètes publique BuildComputer (usine IComputerFactory) {ICPU cpu = factory.
createCPU (); IMemory mémoire factory.createMemory = (); = New StringBuilder de StringBuilder (); sb.Append (string.Format («CPU: {0}", cpu.GetCPUString ())); sb.Append (Environment.NewLine); sb.Append (string.Format ("Mémoire: {0}", memory.GetMemoryString ())); retourner sb.ToString ();}} Appel Clientprivate annuler button2_Click (object sender, EventArgs e) {usine Abstract_Factory.IComputerFactory = new Abstract_Factory.ComputerFactoryA();MessageBox.Show(Abstract_Factory.Client.BuildComputer(factory));}