建设一个网站思路,有关网站建设的网站,怎么做淘宝客网站,wordpress 字体 图标前言 在第一回合中留下的问题#xff0c;http://www.cnblogs.com/aehyok/archive/2013/05/19/3087497.html#xff0c;现在就先处理一个简单的#xff0c;只添加一个Department表。 第二回合 首先要建立部门类#xff0c;假设只有两个字段部门ID#xff0c;和部门名称。 p…前言 在第一回合中留下的问题http://www.cnblogs.com/aehyok/archive/2013/05/19/3087497.html现在就先处理一个简单的只添加一个Department表。 第二回合 首先要建立部门类假设只有两个字段部门ID和部门名称。 public class Department{public int ID { get; set; }public string DeptName { get; set; }} 下面看一下添加了部门表的UML类图 IDpartment接口用于客户端访问解除与具体数据库访问的耦合。 interface IDepartment{void Insert(Department department);Department GetDepartment(int id);} SqlServerDepartment类用于访问Sql Server的Department. public class SqlServerDepartment : IDepartment{public void Insert(Department department){Console.WriteLine(在Sql Server中给Department表增加一条记录);}public Department GetDepartment(int id){Console.WriteLine(在Sql Server中根据ID得到Department表一条记录);return null;}} AccessDepartment类用于访问Access的Departmet。 public class AccessDepartment : IDepartment{public void Insert(Department department){Console.WriteLine(在Access中给Department表增加一条记录);}public Department GetDepartment(int id){Console.WriteLine(在Access中根据ID得到Department表一条记录);return null;}} IFactory接口定义一个创建访问Department表对象的抽象的工厂接口。 interface IFactory{IUser CreateUser();IDepartment CreateDepartment();} 在IFactory接口中又新添加了CreateDepartment()接口方法 SqlServerFactory类实现IFactory接口主要是实现Sql Server数据库添加了的部门接口方法。 public class SqlServerFactory : IFactory{IUser IFactory.CreateUser(){return new SqlServerUser();}public IDepartment CreateDepartment(){return new SqlServerDepartment();}} AccessFactory类实现IFactory接口主要是实现Access数据库添加了的部门接口方法。 public class AccessServerFavtory : IFactory{IUser IFactory.CreateUser(){return new AccessUser();}public IDepartment CreateDepartment(){return new AccessDepartment();}} 客户端代码 class Program{static void Main(string[] args){User user new User();Department dept new Department();IFactory factory new AccessFactory();IUser iufactory.CreateUser();iu.Insert(user);iu.GetUser(1);IDepartment id factory.CreateDepartment();id.Insert(dept);id.GetDepartment(1);Console.ReadLine();}} 现在如果想切换数据库只需要IFactory factory new AccessFactory();修改为IFactory factorynew SqlServerFactory();只有一个Uer类和User操作类的时候是只需要工厂方法模式的但是现在显然你数据库中有很多的表而Sql Server与Access又是两大不同的分类所以解决这种涉及多个产品系列的问题有一个专门的工厂模式叫抽象工厂模式。 总结 通过第一回合和第二回合的前奏我们终于可以进入正题了。