标签: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