C#设计模式--工厂模式之简单模式

简单工厂模式定义:简单工厂模式是属于创建型模式,又叫做静态工厂方法(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

 
原文地址:https://www.cnblogs.com/yinyongle/p/10519453.html