工厂模式

工厂模式:实质是由一个工厂类根据传入的参数,动态决定创建哪一类产品,也就是创建哪一个类的实例,一个类代表一个产品

工厂模式有如下3个角色:

1.工厂:工厂类可以直接被外界调用,创建所需要的产品

2.抽象:一般是具体产品的父类

3.具体产品:工厂模式的创建目标,继承自抽象的子类

C#经常使用反射来实现工厂模式,因为反射可以动态地创建类型的实例

下面是一个简单工厂模式(使用反射)的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace Factory
{
    class Program
    {
        static void Main(string[] args)
        {
            //使用工厂方法创建实例
            Icar name1 = myfactory.getcar("Factory.fengtian");
            name1.makecar();
            Icar name2 = myfactory.getcar("Factory.Dazhong");//忽略了大小写“Dazhong”
            name2.makecar();
        }
    }
    public class myfactory//工厂:使用反射动态创建类型的实例
    {
        public static Icar getcar(string name)
        {
            Icar car = (Icar)Assembly.Load("Factory").CreateInstance(name, true);//Load表示加载程序集,CreateInstance表示查找指定的类型并创建实例,第一个参数表示指定的类型名,第二个参数表示忽略大小写
            return car;
         }
    }
    public interface Icar//抽象
    {
        void makecar();
    }
    public class fengtian : Icar//产品
    {
        public void makecar()
        {
            Console.WriteLine("已生产一辆丰田汽车!");
        }
    }
    public class dazhong : Icar//产品
    {
        public void makecar()
        {
            Console.WriteLine("已生产一辆大众汽车!");
        }
    }
}
简单工厂模式
原文地址:https://www.cnblogs.com/runninglzw/p/4430405.html