码迷,mamicode.com
首页 > 其他好文 > 详细

工厂模式

时间:2019-08-31 10:25:44      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:abs   抽象   stp   原则   ret   void   base   animal   return   

 

 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 }

 

工厂模式

标签:abs   抽象   stp   原则   ret   void   base   animal   return   

原文地址:https://www.cnblogs.com/hanliping/p/11437858.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!