/// <summary> /// 简单工厂模式 Simple Factory Pattern /// geovindu,Geovin Du edit /// 动物 /// </summary> public interface IAnimal { /// <summary> /// /// </summary> void AboutMe(); } /// <summary> /// 简单工厂模式 Simple Factory Pattern /// geovindu,Geovin Du edit /// </summary> public class Dog : IAnimal { /// <summary> /// /// </summary> public void AboutMe() { Console.WriteLine("狗说: 汪汪。我更喜欢吠叫."); } } /// <summary> /// 简单工厂模式 Simple Factory Pattern /// geovindu,Geovin Du edit /// </summary> public class Tiger : IAnimal { public void AboutMe() { Console.WriteLine("老虎说:geovindu。我更喜欢打猎."); } } /// <summary> /// 简单工厂模式 Simple Factory Pattern /// geovindu,Geovin Du edit /// </summary> public class SimpleFactory { /// <summary> /// /// </summary> /// <returns></returns> public IAnimal CreateAnimal() { try { IAnimal intendedAnimal = null; Console.WriteLine("输入你的选择(0代表狗,1代表虎)"); string b1 = Console.ReadLine(); int input; if (int.TryParse(b1, out input)) { Console.WriteLine("你有输入 {0} 数字", input); switch (input) { case 0: intendedAnimal = new Dog(); break; case 1: intendedAnimal = new Tiger(); break; default: Console.WriteLine("你已输出错,您必须输入0或1"); break; //We'll throw a runtime exception for any other choices. // throw new ApplicationException(String.Format(" Unknown Animal cannot be instantiated.")); } } return intendedAnimal; } catch(Exception ex) { Console.WriteLine(ex.Message); return null; } } }
调用:
//简单工厂模式 Console.WriteLine("*** 简单工厂模式 Simple Factory Pattern Demo.***\n"); IAnimal preferredType = null; SimpleFactory simpleFactory = new SimpleFactory(); #region The code region that can vary based on users preference. /* * Since this part may vary,we're moving the * part to CreateAnimal() in SimpleFactory class. */ preferredType = simpleFactory.CreateAnimal(); #endregion #region The codes that do not change frequently. if (object.Equals(preferredType, null)) { Console.WriteLine("没有选择正确的数字。"); } else { preferredType.AboutMe(); } #endregion Console.ReadKey();
输出:
*** 简单工厂模式 Simple Factory Pattern Demo.*** 输入你的选择(0代表狗,1代表虎) 1 你有输入 1 数字 老虎说:geovindu。我更喜欢打猎.
标签:core,Console,donet,Simple,Pattern,Factory,WriteLine,public From: https://www.cnblogs.com/geovindu/p/16786516.html