//The Abstract ComputerFactory to create an Abstract CPU and Memorypublic interface ComputerFactory{ CPU createCPU(); Memory createMemory();}//Abstract CPUpublic interface CPU{ string GetCPU();}//Abstract Memorypublic interface Memory{ string GetMemory();}//Concrete ComputerFactoryA tp create CPUA and MemoryApublic class ComputerFactoryA : ComputerFactory{ public CPU createCPU() { return new CPUA(); } public Memory createMemory() { return new MemoryA(); }}//Concrete CPUApublic class CPUA : CPU{ public string GetCPU() { return "CPUA"; }}//Concrete MemoryApublic class MemoryA : Memory{ public string GetMemory() { return "MemoryA"; }}//client classusing System;public class Client{ //this is a template method; does not depend on the Concrete Factory //and the Concrete classes public static void BuildComputer(ComputerFactory factory) { CPU cpu = factory.createCPU(); Memory memory = factory.createMemory(); Console.WriteLine("CPU:{0}", cpu.GetCPU()); Console.WriteLine("Memory:{0}", memory.GetMemory()); } }
Client.BuildComputer(new ComputerFactoryA());