WEB开发网
开发学院软件开发C语言 无废话C#设计模式之三:Abstract Factory 阅读

无废话C#设计模式之三:Abstract Factory

 2009-04-02 08:21:34 来源:WEB开发网   
核心提示: 实现要点l 抽象工厂本身不负责创建产品,产品最终还是由具体工厂来创建的,无废话C#设计模式之三:Abstract Factory(3),比如,MatrixModel是Matrix创建的,l 好在,ADO.NET 2.0中已经有了整套抽象工厂的类型,而不是PatrixSceneFactory

实现要点

l         抽象工厂本身不负责创建产品,产品最终还是由具体工厂来创建的。比如,MatrixModel是Matrix创建的,而不是PatrixSceneFactory创建的。在.NET中可以使用反射来创建具体工厂,从而使得代码变动降到最低。

l         在抽象工厂中需要体现出生产一系列产品。这一系列产品是相互关联,相互依赖一起使用的。

l         抽象工厂对应抽象产品,具体工厂对应具体产品,外部依赖抽象类型,这样对于新系列产品的创建,外部唯一依赖的就是具体工厂的创建过程(可以通过反射解决)。

注意事项

l         一般来说需要创建一系列对象的时候才考虑抽象工厂。比如,创建一个场景,需要创建模型和纹理,并且模型和纹理之间是有一定联系的,不太可能把PatrixTexture套用在MatrixModel上。

l         如果系统的变化点不在新系列的扩充上,那么就没有必要使用抽象工厂。比如,如果我们不会增加新地图的话,那么也就没有必要引入抽象工厂。

.NET中的抽象工厂

l         我们说过,抽象工厂针对系列产品的应变。在使用ADO.NET进行数据访问的时候,如果目标数据库是Access,我们会使用OleDbConnection、OleDbCommand以及OleDbDataAdapter等一系列ADO.NET对象。那么如果数据库是SQL Server,我们又会改用SqlConnection、SqlCommand以及SqlDataAdapter等一系列ADO.NET对象。如果只使用一套对象,没有什么大问题,如果我们的数据访问有系列变化的需求,比如可以针对Access和SQL Server,而且希望改换数据库尽量对客户端代码透明,那么就需要引入抽象工厂模式。

l         好在,ADO.NET 2.0中已经有了整套抽象工厂的类型。看下面的代码,你应该能辨别这些类型在抽象工厂中的角色:

上一页  1 2 3 4 5  下一页

Tags:废话 设计模式 Abstract

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接