简单工厂模式定义:简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。
工厂(Creator)角色
简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。
抽象产品(Product)角色
简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。
具体产品(Concrete Product)角色
是简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的。
图解:
代码案例:
//抽象产品 public interface Database { //定义了数据库删除增加两个方法 void Delete(); void Insert(); }
//具体产品 //Sqlserver的增删 public class Sqlserver:Database { public void Delete() { Console.WriteLine("delete data from sqlserver"); } public void Insert() { Console.WriteLine("insert data to sqlserver"); } } //Mysql的增删 public class Mysql : Database { public void Delete() { Console.WriteLine("delete data from Mysql"); } public void Insert() { Console.WriteLine("insert data to Mysql"); } }
//工厂核心 public static class IFactory { //根据需求生产 public static Database CreateDatabase(string dbType) { Database db = null; switch (dbType) { case "Sqlserver": db = new Sqlserver(); break; case "Mysql": db = new Mysql(); break; default: break; } return db; } }
//客户需求 static void Main(string[] args) { Database db1 = IFactory.CreateDatabase("Sqlserver"); db1.Delete(); db1.Insert(); Database db2 = IFactory.CreateDatabase("Mysql"); db2.Delete(); db2.Insert(); Console.ReadKey(); }
参考网站:https://baike.baidu.com/item/简单工厂模式/8801727