初学设计模式-Abstract Factory


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


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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值