設計模式--抽象工廠模式

抽象工廠用例圖

代碼

class Program

{

static void Main(string[] args)

{

User user = new User();

Department dept = new Department();

IUser iu = DataAccess.CreateUser();

iu.Insert(user);

iu.GetUser(1);

IDepartment id = DataAccess.CreateDepartment();

id.Insert(dept);

id.GetDepartment(1);

Console.Read();

}

}

class User

{

private int _id;

public int ID

{

get { return _id; }

set { _id = value; }

}

private string _name;

public string Name

{

get { return _name; }

set { _name = value; }

}

}

class Department

{

private int _id;

public int ID

{

get { return _id; }

set { _id = value; }

}

private string _deptName;

public string DeptName

{

get { return _deptName; }

set { _deptName = value; }

}

}

interface IUser

{

void Insert(User user);

User GetUser(int id);

}

class SqlserverUser : IUser

{

public void Insert(User user)

{

Console.WriteLine("在Sqlserver中给User表增加一条记录");

}

public User GetUser(int id)

{

Console.WriteLine("在Sqlserver中根据ID得到User表一条记录");

return null;

}

}

class AccessUser : IUser

{

public void Insert(User user)

{

Console.WriteLine("在Access中给User表增加一条记录");

}

public User GetUser(int id)

{

Console.WriteLine("在Access中根据ID得到User表一条记录");

return null;

}

}

interface IDepartment

{

void Insert(Department department);

Department GetDepartment(int id);

}

class SqlserverDepartment : IDepartment

{

public void Insert(Department department)

{

Console.WriteLine("在Sqlserver中给Department表增加一条记录");

}

public Department GetDepartment(int id)

{

Console.WriteLine("在Sqlserver中根据ID得到Department表一条记录");

return null;

}

}

class AccessDepartment : IDepartment

{

public void Insert(Department department)

{

Console.WriteLine("在Access中给Department表增加一条记录");

}

public Department GetDepartment(int id)

{

Console.WriteLine("在Access中根据ID得到Department表一条记录");

return null;

}

}

class DataAccess

{

private static readonly string AssemblyName = "抽象工厂模式";

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 CreateDepartment()

{

string className = AssemblyName + "." + db + "Department";

return (IDepartment)Assembly.Load(AssemblyName).CreateInstance(className);

}

}

運行效果

时间: 2024-10-13 03:06:21

設計模式--抽象工廠模式的相关文章

[設計模式].01.簡單工廠模式

用戶接口 1 //定義一個用戶該有的操作 2 public interface IUser 3 { 4 bool Login(string userName, string psw); 5 bool Login(); 6 bool Exsit(); 7 } 用戶抽象類 1 //定義一個抽象類,讓它去實現IUser接口 2 //編寫每個要User類需要執行的操作,如登錄信息記錄到日志,修飾符定義為可重寫virtual 3 public abstract class User : IUser 4 {

實戰設計模式之工厂方法模式

對於http請求原理的朋友應該了解IIS上後綴映射 /*当我们请求一个*.aspx的文件时,此时会映射到System.Web.UI.PageHandlerFactory类上进行处理,而对*.ashx的请求将映射到System.Web.UI.SimpleHandlerFactory类中(这两个类都是继承于IHttpHandlerFactory接口的)*/ 下面用一線圖來直觀的看一下 圖引用:http://www.cnblogs.com/zhili/p/FactoryMethod.html 為了更直

Java设计模式—工厂方法模式&抽象工厂模式

工厂方法模式与抽象工厂模式都是设计模式中重要而且常见的模式.       工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法使一个类的实例化延迟到其子类. 通用类图如下: 在工厂方法模式中,抽象产品类Product负责定义产品的共性,实现对事物最抽象的定义:Creator为抽象创建 类,也就是抽象工厂,具体如何创建产品类是由具体的实现工厂ConcreteCreator完成的. 工厂方法模式的扩展方式有很多种,下边是工厂方法模式一个比较实用的源代码: 抽象产品类: pub

設計模式具體應用

大话设计模式中的利用反射加抽象工厂的数据访问程序.先来看看反射技术的基本格式:--反射工廠 Assembly.Load(“程序集名称”).CreateInstance(“命名空间.类名称”); 只要在程序顶端写上using System.Reflection来引用Reflection,就可以采用反射工厂来克服抽象工厂模式的先天不足.下面我们来看通过反射技术实现不同数据库的访问程序. DataAccess类,用反射技术,取代了抽象工厂中的IFactory,SqlServerFactory和Acce

組裝工廠設置IQC的目的

在電子組裝工廠的組織裡,一般都會有 IQC (Incoming Quality Control) 這個單位,台灣稱之為「入(進)料管控」,大陸稱之為「來料管控」,其最主要目的在攔檢所有買進材料是否符合圖面規格,以免不良零件直接進入生產線造成不良產出或甚至產線停產.這有點像是機場入境時的海關,用抽撿的方式檢查旅客行李,以防止有可能流入的違禁品,它雖然不能100%攔截所有有問題的零件,但至少可以有一個初步的關口攔截到部份有問題的零件. 我個人認為設置 IQC 可以有下列幾個目的: 預先釐清不良零件的

结合实例分析简单工厂模式&工厂方法模式&抽象工厂模式的区别

之前写过一篇关于工厂模式(Factory Pattern)的随笔,里面分析了简单工厂模式,但对于工厂方法和抽象工厂的分析较为简略.这里重新分析分析三者的区别,工厂模式是java设计模式中比较简单的一个设计模式,但很多地方都用到了工厂模式,(如解析xml中,jdbc连接数据库等)利用好工厂模式对程序的设计很有用处.工厂模式在一些设计模式的书中分为简单工厂模式,工厂方法模式和抽象工厂模式三类.也有把工厂方法模式划分到抽象工厂模式的,认为工厂方法是抽象工厂模式的特例的一种,就是只有一个要实现的产品接口

简单工厂模式&工厂方法模式&抽象工厂模式的区别

之前写过一篇关于工厂模式(Factory Pattern)的随笔,里面分析了简单工厂模式,但对于工厂方法和抽象工厂的分析较为简略.这里重新分析分析三者的区别,工厂模式是java设计模式中比较简单的一个设计模式,但很多地方都用到了工厂模式,(如解析xml中,jdbc连接数据库等)利用好工厂模式对程序的设计很有用处.工厂模式在一些设计模式的书中分为简单工厂模式,工厂方法模式和抽象工厂模式三类.也有把工厂方法模式划分到抽象工厂模式的,认为工厂方法是抽象工厂模式的特例的一种,就是只有一个要实现的产品接口

3 创建型模式-----抽象工厂模式

附加概念: 产品等级结构:不同品牌的同一类产品,如Haier电视机,TCL电视机都是电视机,因此属于同一个产品等级结构. 产品族:属于同一个品牌的所有产品,如Haier电视机,Haier冰箱等.   模式动机:工厂方法模式一般针对的是一个产品等级结构(如仅生产电视机),而抽象工厂模式针对的是多个产品等级结构(如不仅生产电视机,还生产空调). 模式定义:一个具体工厂可以创建一个产品族的所有产品,又称为Kit模式. 模式结构图: 模式实例: 一个电器工厂负责生产电视机和空调,其中包括Haier系列和

天然工坊模式分销系统技术开发

天然工坊模式分销系统技术开发(何 188.264.66052 微/电)天然工坊模式开发.天然工坊系统开发.天然工坊模式系统技术开发等. 2016年1月27日,移动互联电商平台"天然工坊"公众号上线40天,会员数量就已经达到100万,产生一个亿的销量,目前还处于缺货状态.该平台仅销售一款产品: "竹妃"竹纤维本色纸巾.天然工坊不靠线下商场门店,不靠阿里京东等电商.拥有自己独特的电商模式,如今用户量已达1600多万. 公司研发的竹妃纸巾,通过微信公众号平台以及搭载的自有