简单工厂模式是创建型模式,任何可以产生对象的方法或类都可以称之为工厂,由此可见,单例也是一种工厂,那么为什么有new之后,还需要工厂呢?是为了灵活控制生产过程,实现创建与使用相互独立。
namespace Designmode.SimpleFactory { /// <summary> /// 产品接口 /// </summary> public interface IProduct { /// <summary> /// 产品的某个方法 /// </summary> void Do(); } }
namespace Designmode.SimpleFactory { /// <summary> /// 产品A /// </summary> public class ProductA : IProduct { /// <summary> /// 产品A的Do方法 /// </summary> public void Do() { Console.WriteLine($"Product A Do"); } } }
namespace Designmode.SimpleFactory { /// <summary> /// 产品A /// </summary> public class ProductB : IProduct { /// <summary> /// 产品A的Do方法 /// </summary> public void Do() { Console.WriteLine($"Product B Do"); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Designmode.SimpleFactory { /// <summary> /// 产品工厂 /// </summary> public class ProductFactory { /// <summary> /// 生产产品 /// </summary> /// <param name="name"></param> /// <returns>抽象产品</returns> public static IProduct MakeProduct(string name) { switch (name) { case "A": return new ProductA(); case "B": return new ProductB(); } return null; } } }