软件工程

本类阅读TOP10

·PHP4 + MYSQL + APACHE 在 WIN 系统下的安装、配置
·Linux 入门常用命令(1)
·Linux 入门常用命令(2)
·使用 DCPROMO/FORCEREMOVAL 命令强制将 Active Directory 域控制器降级
·DirectShow学习(八): CBaseRender类及相应Pin类的源代码分析
·基于ICE方式SIP信令穿透Symmetric NAT技术研究
·Windows 2003网络负载均衡的实现
·一网打尽Win十四种系统故障解决方法
·数百种 Windows 软件的免费替代品列表
·收藏---行百里半九十

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
初学设计模式-Abstract Factory

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站


    对于同一个软件,可能同时需要支持在不同的窗口环境下运行,或者同一系列的程序的配置都一样的时候,我们可以采用这种抽象工厂模式,
    抽象工厂模式的关键是如下图所示的左边部分,所有的具体实现部分,如不同类型的界面风格等,均被包含在一个AbstractFactory类中,客户端(Client)只与这个类打交道。其他具体的实现有这个类的成员去完成。


    所以此模式分离了具体的类,使得我们可以很快的对程序进行修改,例如界面效果的更改,因为在程序中仅出现一个具体工厂类一次,只需要修改具体的工厂,就可以使用不同的产品配置。通过AbstractFactory或者ConcreteFactory(因为可能在程序中由同一个类担任这两个角色,见原书中文版的62页)提供的接口,实现不同的具体子类,但这样也存在一个问题,就是可能在需要进行特定子类的相关操作的时候,而这些操作不能通过抽象接口得到。而如果进行强制类型转换,虽然可以进行向下的类型转换,但是这样并不安全。
    另外,此模式的适用性还提到:当你提供一个产品类库,而只想显示它们的接口而不是实现的时候。比较奇怪的是我们面向对象的思想就是说我们预先定义的一系列接口,在使用的时候只关心接口,并不关心实现吗?为什么在抽象工厂模式里面还要特别提出,其他的模式都不是这样的吗?
    以上只是本人第一次看AbstractFactory的心得,肯定有一定的片面和误解,希望各位达人多多指点




相关文章

相关软件