首页 > 其他分享 >CSharp: Simple Factory Pattern in donet core 3

CSharp: Simple Factory Pattern in donet core 3

时间:2022-10-12 23:35:49浏览次数:33  
标签:core Console donet Simple Pattern Factory WriteLine public

 

    /// <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

相关文章