static void Main(string[] args) { Factory[] factories = new Factory[2]; factories[0] = new ConcreteFactoryA(); factories[1] = new ConcreteFactoryB(); foreach (Factory item in factories) { Product product = item.CreateProduct(); Console.WriteLine("Created {0}", product.GetType().Name); } //练习 // 定义一个鸡腿工厂 IKFCFactory factory = new ChickenFactory(); // 生产鸡腿 KFCFood food1 = factory.CreateFood(); food1.Display(); // 生产鸡腿 KFCFood food2 = factory.CreateFood(); food2.Display(); // 生产鸡腿 KFCFood food3 = factory.CreateFood(); food3.Display(); Console.ReadKey(); }
public void TestMethodAbstractFactory() { IAbstractFactory factoryA = new ConcreteFactoryA(); IAbstractFactory factoryB = new ConcreteFactoryB(); var clientA = new Client(factoryA); var clientB = new Client(factoryB); }
public void TestAbstractFactory() { IAbstractFactory factory = new ConcreteFactoryA(); var productA1 = factory.CreateProductA(); var productB1 = factory.CreateProductB(); Assert.AreEqual(productA1.GetType(), typeof(ProductA1)); Assert.AreEqual(productB1.GetType(), typeof(ProductB1)); factory = new ConcreteFactoryB(); var productA2 = factory.CreateProductA(); var productB2 = factory.CreateProductB(); Assert.AreEqual(productA2.GetType(), typeof(ProductA2)); Assert.AreEqual(productB2.GetType(), typeof(ProductB2)); }
public void AbstractFactory_CheckCorrectInstances() { var factoryA = new ConcreteFactoryA(); var _clientA = new Client(factoryA); var factoryB = new ConcreteFactoryB(); var _clientB = new Client(factoryB); var prodA1 = _clientA.ProductA; var prodB1 = _clientA.ProductB; var prodA2 = _clientB.ProductA; var prodB2 = _clientB.ProductB; Assert.IsTrue((prodA1 as ConcreteProductA1) != null, "prodA1 incorrecto"); Assert.IsTrue((prodB1 as ConcreteProductB1) != null, "prodA1 incorrecto"); Assert.IsTrue((prodA2 as ConcreteProductA2) != null, "prodA1 incorrecto"); Assert.IsTrue((prodB2 as ConcreteProductB2) != null, "prodA1 incorrecto"); }
public void DALAbstractFactoryTest() { //arrange IAbstractFactory factoryA = new ConcreteFactoryA(); IAbstractFactory factoryB = new ConcreteFactoryB(); var expectedResult1 = "fAmA"; var expectedResult2 = "fAmB"; var expectedResult3 = "fBmA"; var expectedResult4 = "fBmB"; //act var result1 = factoryA.CreateObjectA().MethodA(); var result2 = factoryA.CreateObjectB().MethodB(); var result3 = factoryB.CreateObjectA().MethodA(); var result4 = factoryB.CreateObjectB().MethodB(); //assert Assert.AreEqual(expectedResult1, result1); Assert.AreEqual(expectedResult2, result2); Assert.AreEqual(expectedResult3, result3); Assert.AreEqual(expectedResult4, result4); }