《CPP设计模式》09 抽象模式

1. 抽象模式是工厂模式的升级,可以说工厂模式是抽象模式的特例,但是工厂模式和抽象模式仍然是各自有各自的适应范围,不代表工厂模式可以适用的,抽象模式就更好。

2. 这里我们构建一个案例,未知品牌的数据库的操作,如可能是对MySQL, Oracle,等几种不同品牌的数据库的操作。这里由于变化的是品牌,不变的是所需操作,如包括:Connection、Command,以及DataReader等。首先利用工厂模式,具体需要实现的类和函数大致如下:请添加图片描述

2.1 这里可以看到只要外界传入指定品牌的相应的工厂类即可,如MSQlConnectionFactory,MSQlCommandFactory,MSQlReaderFactory等,将传入的子类依次赋值给Employee类即可,这样后续就可以进行GetEmployees的函数操作。
2.2 但是这里存在一个问题,如果上一级程序员传入了MySQl的MSQlCommandFactory给用户类的commanFactory,但是connectionFactory却传入的是Oracle的OracleConnectionFactory,这样就会造成操作的对象不一致。这里就引出抽象工厂,即把所有操作包括在一个工厂里,这样只要传入的是一个指定品牌的工厂,其中相应的函数返回类就不会再串用。

请添加图片描述

3. 总结

  • 对于多系列对象的同一类操作,则存在稳定中有变化,变化中有稳定,需要借鉴抽象模式;
  • 但是对于只操作一个系列的对象,那只需要工厂模式即可。
    请添加图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值