设计模式(十一)——抽象工厂

来源:互联网 发布:淘宝模特摄影师 编辑:程序博客网 时间:2024/06/03 14:50

抽象工厂模式(Abstract Factory)

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


代码

1.代码如下:

用户类

using System;namespace AbstractFactory{//用户类public class User{//ID号private int _id;public int ID {get{ return _id; }set{ _id = value; }}//名字private string _name;public string Name {get{ return _name; }set{ _name = value; }}}}

部门类

using System;namespace AbstractFactory{public class Department{public Department (){}}}


工厂接口

using System;namespace AbstractFactory{public interface IFactory{IUser CreateUser();IDepartment CreateDepartment ();}}

具体工厂——SqlServer

using System;namespace AbstractFactory{public class SqlServerFactory:IFactory{public IUser CreateUser(){return new SqlserverUser();}public IDepartment CreateDepartment(){return new SqlserverDepartment();}}}

具体工厂——AccessFactory

using System;namespace AbstractFactory{public class AccessFactory:IFactory{public IUser CreateUser(){return new AccessUser ();}public IDepartment CreateDepartment(){return new AccessDepartment();}}}

部门接口

using System;namespace AbstractFactory{public interface IDepartment{void Insert(Department department);Department GetDepartment (int id);}}

具体部们——SqlserverDepartment

using System;namespace AbstractFactory{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

using System;namespace AbstractFactory{public class AccessUser:IUser{//插入数据public void Insert(User user){Console.WriteLine ("在Access中给User表增加一条记录");}//获取数据public User GetUser(int id){Console.WriteLine ("在Access中根据ID得到User表一条记录");return null;}}}

用户接口

using System;namespace AbstractFactory{public interface IUser{void Insert (User user);User GetUser(int id);}}

具体用户——SqlserverUser

using System;namespace AbstractFactory{public class SqlserverUser:IUser{//插入数据public void Insert(User user){Console.WriteLine ("在SQL Server中给User表增加一条记录");}//获取数据public User GetUser(int id){Console.WriteLine ("在SQL Server中根据ID得到User表一条记录");return null;}}}

具体用户——AccessUser

using System;namespace AbstractFactory{public class AccessUser:IUser{//插入数据public void Insert(User user){Console.WriteLine ("在Access中给User表增加一条记录");}//获取数据public User GetUser(int id){Console.WriteLine ("在Access中根据ID得到User表一条记录");return null;}}}
2.客户端代码如下:

客户端

using System;namespace AbstractFactory{class MainClass{public static void Main (string[] args){User user = new User ();Department department = new Department ();//IFactory factory = new AccessFactory ();IFactory factory = new SqlServerFactory ();IUser iuser = factory.CreateUser ();iuser.Insert (user);iuser.GetUser (1);IDepartment idepartment = factory.CreateDepartment ();idepartment.Insert (department);idepartment.GetDepartment (1);}}}
3.运行结果

UML图

源码下载地址:https://gitee.com/ZhaoYongshuang/DesignPattern.git
原创粉丝点击