博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式之抽象工厂模式
阅读量:5872 次
发布时间:2019-06-19

本文共 2906 字,大约阅读时间需要 9 分钟。

  抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

最大的好处便是易于交换产品系列,由于具体工厂类,在一个应用中只需在初始化的时候出现一次,这就使得改变一个应用的具体工厂变得非常容易,它只需改变具体工厂即可使用不同的产品配置。

  他使具体创建实例的过程与客户端分离,客户端是通过它们的抽象接口操纵实例,产品的具体类名也被具体工厂的实现分离。  

下面的代码还使用了反射与XML.

代码如下:

 

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Reflection;using System.Configuration;namespace 设计模式之抽象工厂模式2{    class Deparentment{    }    interface IDepartment    {        void Insert(Deparentment department);        Deparentment GetDepartment();    }    class SqlserverDepartment : IDepartment    {       public void Insert(Deparentment deparent)        {            Console.WriteLine("在SQL中为deparent表增加了一条记录");        }       public Deparentment GetDepartment()        {            Console.WriteLine("从SQL中的deparent表中取出了一条记录");            return new Deparentment();        }    }    class AccessDeparent:IDepartment    {       public void Insert(Deparentment deparent)        {            Console.WriteLine("在Access中为deparent表增加了一条记录");        }      public  Deparentment GetDepartment()        {            Console.WriteLine("从Access中的deparent表中取出了一条记录");            return new Deparentment();        }    }    class User    {    }    interface IUser    {        void Insert(User u);        User GetUser();    }    class SqlUser:IUser    {        public void Insert(User u)        {            Console.WriteLine("在Sql中向User表中添加了一条记录");        }        public User GetUser()        {            Console.WriteLine("从SQL中的User表中取出了一条记录");            return new User();        }    }    class AccessUser:IUser    {        public void Insert(User u)        {            Console.WriteLine("在Accesss中向User表中添加了一条记录");        }        public User GetUser()        {            Console.WriteLine("从Access中的User表中取出了一条记录");            return new User();        }    }    class DataAccess    {        private static readonly string AssemblyName = "设计模式之抽象工厂模式2";        private static readonly string db = ConfigurationManager.AppSettings["DB"];        public static IUser CreateUser()        {            string className = AssemblyName + "." + db + "User";            return (IUser)Assembly.Load(AssemblyName).CreateInstance(className);        }        public static IDepartment CreateDeparent()        {            string className = AssemblyName + "." + db + "Department";            return (IDepartment)Assembly.Load(AssemblyName).CreateInstance(className);        }    }    class Program    {        static void Main(string[] args)        {            User user = new User();            Deparentment dept = new Deparentment();            IUser iu = DataAccess.CreateUser();            iu.Insert(user);            iu.GetUser();            Console.Read();        }    }}

 

XML文件:

运行结果:

 

转载于:https://www.cnblogs.com/JsonZhangAA/p/5554559.html

你可能感兴趣的文章
这7本O’Reilly推出的免费Python电子书,够你看了
查看>>
Thymeleaf基本知识
查看>>
帝国理工:如何用 AI 解决 80% 专科医生担忧的心律装置移植手术难题
查看>>
技巧分享 PDF如何删除数字签名
查看>>
CCFA中国国际零售创新大会,观远数据用智能分析驱动零售决策
查看>>
网易云课堂资源合集百度云分享
查看>>
困惑我半年的一个问题终于解决了
查看>>
关于头文件,全局变量,extern,static
查看>>
Tomcat错误解决
查看>>
Spring事务管理(二)-TransactionProxyFactoryBean原理
查看>>
CentOS图形界面和命令行切换
查看>>
我的友情链接
查看>>
linux用户和组管理
查看>>
HTML5通信机制与html5地理信息定位(gps)
查看>>
【心灵鸡汤】谁的青春不迷茫
查看>>
Jenkins-安装jenkins2.7.1版本
查看>>
优秀网页设计:35个吸引眼球的精美作品集网站
查看>>
深入浅出三剑客之awk必杀技一例
查看>>
maven jdk 8 Error while generating Javadoc 或者 Error while creating archive
查看>>
彻底删除0KB顽固文件或文件夹的方法
查看>>