北京市网站制作,织梦模板国外网站,网络推广软件费用情况,云服务器网站解析抽象工厂模式#xff08;Abstract Factory#xff09;
抽象工厂模式#xff08;Abstract Factory Pattern#xff09;是一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式#xff0c;它提供了一种创建对象的最佳方式。工厂方…抽象工厂模式Abstract Factory
抽象工厂模式Abstract Factory Pattern是一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式它提供了一种创建对象的最佳方式。工厂方法模式是为了克服简单工厂模式的缺点而设计出来的,简单工厂模式的工厂类着产品类的增加需要增加额外的代码而工厂方法模式每个具体工厂类只完成单个实例的创建,它具有很好的可扩展性。但是在现实生活中一个工厂只创建单个产品比较少工厂都多元化一个工厂创建一系列的产品如果我们要设计这样的系统时工厂方法模式就不太适用而使用抽象工厂模式却可以很好地解决。
using System;
namespace ConsoleApplication
{//一般每个接口或类都写在单独的.cs文件中//本示例为了执行查看方便才写在一起public interface IDatabase{void Delete();void Insert();}public interface IORM{void Delete();void Insert();}//Sqlserver的增删public class Sqlserver : IDatabase{public void Delete(){Console.WriteLine(delete data from sqlserver);}public void Insert(){Console.WriteLine(insert data to sqlserver);}}//Mysql的增删public class Mysql : IDatabase{public void Delete(){Console.WriteLine(delete data from Mysql);}public void Insert(){Console.WriteLine(insert data to Mysql);}}//Sqlserver的增删public class SqlserverORM : IORM{public void Delete(){Console.WriteLine(delete data from sqlserver by ORM);}public void Insert(){Console.WriteLine(insert data to sqlserver by ORM);}}//Mysql的增删public class MysqlORM : IORM{public void Delete(){Console.WriteLine(delete data from Mysql by ORM);}public void Insert(){Console.WriteLine(insert data to Mysql by ORM);}}public interface ICreator{IDatabase CreateDatabase();IORM CreateORM();}public class MysqlFactory:ICreator{/// /// 负责创建Mysql/// /// public IDatabase CreateDatabase(){return new Mysql();}/// /// 负责创建MysqlORM/// /// public IORM CreateORM(){return new MysqlORM();}}public class SqlserverFactory:ICreator{/// /// 负责创建Sqlserver/// /// public IDatabase CreateDatabase(){return new Sqlserver();}/// /// 负责创建SqlserverORM/// /// public IORM CreateORM(){return new SqlserverORM();}}/*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;}}*/class Program{static void Main(string[] args){IDatabase db1 new SqlserverFactory().CreateDatabase();db1.Delete();db1.Insert();IDatabase db2 new MysqlFactory().CreateDatabase();db2.Delete();db2.Insert();IORM db3 new SqlserverFactory().CreateORM();db3.Delete();db3.Insert();IORM db4 new MysqlFactory().CreateORM();db4.Delete();db4.Insert();//添加新数据库直接添加对应的类即可Console.ReadKey();}}
}