现在的位置: 首页 > 综合 > 正文

C# 反射在工厂设计模式中的应用

2012年12月08日 ⁄ 综合 ⁄ 共 1206字 ⁄ 字号 评论关闭
利用设计模式可以使我们的代码更灵活,更容易扩展,更容易维护。各种面向对象的程序设计语言都提供了基本相同的机制:比如类、继承、派生、多态等等。但是又有各自的特色,c# 中的反射机制便是一个很重要的工具,好好地利用就可以在实际中发挥很大的作用。

例子:

using System;

namespace Factory
{
    public interface IFruit
    {
    }

    public class Orange : IFruit
    {
        public Orange()
        {
            Console.WriteLine("An orange is got!");
        }
    }

    public class Apple : IFruit
    {
        public Apple()
        {
            Console.WriteLine("An apple is got!");
        }
    }

    public class FruitFactory
    {
        private static FruitFactory _instance = new FruitFactory();
        public static FruitFactory Instance
        {
            get { return _instance; }
        }

        public IFruit MakeFruit(string Name)
        {
            IFruit MyFruit = null;
            try
            {
                Type type = Type.GetType(Name, true);
                MyFruit = (IFruit)Activator.CreateInstance(type);
            }
            catch (TypeLoadException e)
            {
                Console.WriteLine("I dont know this kind of fruit,exception caught - {0}", e.Message);
            }
            return MyFruit;
        }
    }

    public class Test
    {
        static void Main()
        {
            string FruitName = Console.ReadLine();
            FruitFactory.Instance.MakeFruit("Factory." + FruitName);
        }
    }
}

运行:
      输入: Apple 查看结果

抱歉!评论已关闭.