Det understøtter at tilføje nye typer af produkter og deres familiesExample: offentlig grænseflade IComputerFactory {ICPU createCPU (); IMemory createMemory ();} offentlige grænseflade ICPU {string GetCPUString ();} offentlige grænseflade IMemory {string GetMemoryString ();} //Beton CPUApublic klasse CPUA: ICPU {public string GetCPUString () {return "CPUA"; }} //Beton MemoryApublic klasse MemoryA: IMemory {public string GetMemoryString () {return "MemoryA"; }} public class ComputerFactoryA: IComputerFactory {public ICPU createCPU () {return nyt CPUA (); } Public IMemory createMemory () {return nyt MemoryA (); }} public class Client {//dette er en skabelon metode; afhænger ikke af den Beton Factory //og offentligheden Konkrete klasser statisk streng BuildComputer (IComputerFactory fabrik) {ICPU cpu = factory.
createCPU (); IMemory hukommelse = factory.createMemory (); StringBuilder sb = ny StringBuilder (); sb.Append (string.Format ("CPU: {0}", cpu.GetCPUString ())); sb.Append (Environment.NewLine); sb.Append (string.Format ("Memory: {0}", memory.GetMemoryString ())); tilbage sb.ToString ();}} Opkald Clientprivate ugyldiggøre button2_Click (objekt afsender, EventArgs e) {Abstract_Factory.IComputerFactory fabrik = ny Abstract_Factory.ComputerFactoryA();MessageBox.Show(Abstract_Factory.Client.BuildComputer(factory));}