工厂方法模式(Factory Method Pattern)-创造类

工厂方法模式(Factory Method Pattern)-创造类

描述:定义一个用于创建对象的接口,让子类决定实例化那一个类。工厂方法模式使一个类的实例化延迟到子类。

//抽象工厂类
public abstract class Creator
{
     public abstract Product FactoryMethod(string className);

}

//具体工厂类
public class ConcreteCreator : Creator
{
    public override Product FactoryMethod(string className)
    {
        switch (className)
        {
            case "ConcreteProduct":
                return new ConcreteProduct();
            case "ConcreteProduct2":
                return new ConcreteProduct2();
        }
        return null;
    }
}

//抽象产品类
public abstract class Product
{
    public void method1()
    {
        //业务逻辑处理
    }

    //抽象方法
    public abstract void method2();
}

//具体产品类
public class ConcreteProduct : Product
{
    public override void method2()
    {
       //业务逻辑处理
    }
}

//具体产品类2
public class ConcreteProduct2 : Product
{
      public override void method2()
      {
            //业务逻辑处理
      }
}

 

 单例模式+工厂模式 

public class ConcreteCreator2<T>
{
    private static Dictionary<string, T> dic = new Dictionary<string, T>();

    public static T FactoryMenthod()
    {
        string className = typeof(T).FullName;
        if (!dic.ContainsKey(className))
        {
            try
            {
                var newEntity = Activator.CreateInstance<T>();
                dic.Add(className, (T)newEntity);
            }
            catch (Exception ex)
            {
                
            }
        } 
        return dic[className];
    }
}

 

posted @ 2016-04-16 20:32  好兵  阅读(80)  评论(0)    收藏  举报