using System; namespace AbstractFactoryFunc{ public abstract class AbstractProductA{ public abstract void ProductAMethod(); } public class ProductA1 : AbstractProductA{ public override void ProductAMethod(){ Console.Write(this.ToString() + " : Method!"); Console.Read(); } } public class ProductA2 : AbstractProductA{ public override void ProductAMethod(){ Console.Write(this.ToString() + " : Method!"); Console.Read(); } } public abstract class AbstractProductB{ public abstract void ProductBMethod(); } public class ProductB1 : AbstractProductB{ public override void ProductBMethod(){ Console.Write(this.ToString() + " : Method!"); Console.Read(); } } public class ProductB2 : AbstractProductB{ public override void ProductBMethod(){ Console.Write(this.ToString() + " : Method!"); Console.Read(); } } public abstract class AbstractFactory{ public abstract AbstractProductA CreateProductA(); public abstract AbstractProductB CreateProductB(); } public class ConcreteFactory1 : AbstractFactory{ public override AbstractProductA CreateProductA() { return new ProductA1(); } public override AbstractProductB CreateProductB() { return new ProductB1(); } } public class ConcreteFactory2 : AbstractFactory{ public override AbstractProductA CreateProductA() { return new ProductA2(); } public override AbstractProductB CreateProductB() { return new ProductB2(); } } public class Client{ public AbstractProductA abstractProductA; public AbstractProductB abstractProductB; public Client(AbstractFactory abstractFactory){ abstractProductA = abstractFactory.CreateProductA(); abstractProductB = abstractFactory.CreateProductB(); } public void Run() { abstractProductA.ProductAMethod(); abstractProductB.ProductBMethod(); } } public class EntryPoint{ public static void Main(string[] args){ AbstractFactory factory1 = new ConcreteFactory1(); Client myClient = new Client(factory1); myClient.Run(); Console.Read(); Console.ReadKey(); } } }
转载于:https://www.cnblogs.com/zhangchenliang/archive/2012/08/22/2651480.html