工厂模式

…衆ロ難τιáo~ 提交于 2019-11-29 01:35:50

 

 1 namespace UnitTestProject1.BaseDesign
 2 {
 3 
 4     /// <summary>
 5     /// 工厂方法模式要求:尽量使用抽象类或接口来定义就可以达到一个开闭原则
 6     /// </summary>
 7     [TestClass]
 8     public class BaseDesign
 9     {
10         [TestMethod]
11         public void TestMethod1()
12         {
13             GetAnimalEat(new DogFactoryFactory());
14 
15             GetAnimalEat(new PigFactoryFactory());
16 
17             //如果再增加一个AnimalEat不会对现有代码有改动
18         }
19 
20         void GetAnimalEat(AnimalFactory fa)
21         {
22             Animal am = fa.GetAnimal();
23             am.Eat();
24         }
25     
26     }
27     public abstract class Animal
28     {
29         public abstract void Eat();
30     }
31 
32     public class Dog : Animal
33     {
34         public override void Eat()
35         {
36             Console.WriteLine("dog eat");
37         }
38     }
39 
40     public class Pig : Animal
41     {
42         public override void Eat()
43         {
44             Console.WriteLine("pig eat");
45         }
46     }
47 
48     public abstract class AnimalFactory
49     {
50         public abstract Animal GetAnimal();
51     }
52 
53     public class DogFactoryFactory : AnimalFactory
54     {
55         public override Animal GetAnimal()
56         {
57             return new Dog();
58         }
59 
60     }
61     public class PigFactoryFactory : AnimalFactory
62     {
63         public override Animal GetAnimal()
64         {
65             return new Pig();
66         }
67     }
68 }

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!