Dongle烧写模块重构(一)--最基本的设计,以继承可以组织多个方案商
2014-10-20 14:58
357 查看
一、Dongle烧写模块的需求:
1.框架需要兼容各个方案商,各方案商dongle使用的基本流程是一致的
2.要方便地让各个方案商添加新的功能
3.有很多个方案商,要方便各个新的方案商加入进来,这样的话,就可以使用工厂模式
二、设计演化流程:
如果用继承方式来设计的话,比如
方案商基类:
//设计一个方案商基类,比如方案商会提供scanDongle和getDongleInfo这些接口,然后具体的方案商继承这个基类
方案商Iflytek:
方案商Nanosic:
测试一下:
结果:
会发现:如果采用派生类继承的方式来实现的话,每一个派生类都必须小心检查哪些类是需要覆盖的,比如方案商Nanosic加入的时候,没有覆盖掉getDongleInfo这个函数,就会采用基类的实现,而这不一定是新加入的方案商所希望的。所以这里还需要做其他处理
1.框架需要兼容各个方案商,各方案商dongle使用的基本流程是一致的
2.要方便地让各个方案商添加新的功能
3.有很多个方案商,要方便各个新的方案商加入进来,这样的话,就可以使用工厂模式
二、设计演化流程:
如果用继承方式来设计的话,比如
方案商基类:
//设计一个方案商基类,比如方案商会提供scanDongle和getDongleInfo这些接口,然后具体的方案商继承这个基类
class BaseVendor{ public: BaseVendor(); ~BaseVendor(); IScanDongle *iScanDongle; virtual void scanDongle(); virtual void getDongleInfo(); };
方案商Iflytek:
class VendorIflytek : public BaseVendor{ public: VendorIflytek(); ~VendorIflytek(); void scanDongle(); };
方案商Nanosic:
Class VendornNanosic : public BaseVendor{ VendornNanosic(); ~VendornNanosic(); };
VendorIflytek::VendorIflytek(){ LOGE("VendorIflytek::VendorIflytek"); } VendorIflytek::~VendorIflytek(){ LOGE("VendorIflytek::~VendorIflytek"); } void VendorIflytek::scanDongle(){ LOGE("VendorIflytek::scanDongle"); iScanDongle = new ScanDonglebyBluetooth(); iScanDongle->scanDongle(); }
测试一下:
//create a vendor BaseVendor *vendor = new VendorIflytek(); //excute a vendor behavior vendor->scanDongle();
结果:
会发现:如果采用派生类继承的方式来实现的话,每一个派生类都必须小心检查哪些类是需要覆盖的,比如方案商Nanosic加入的时候,没有覆盖掉getDongleInfo这个函数,就会采用基类的实现,而这不一定是新加入的方案商所希望的。所以这里还需要做其他处理
相关文章推荐
- Dongle烧写模块重构(三)--用策略模式自定行为框架,再交由方案商实现
- Dongle烧写模块重构(五)--当前的设计
- Dongle烧写模块重构(二)--让方案商直接面对接口编程
- Dongle烧写模块重构(四)--用工厂模式将方案商从功能代码中抽离
- Dongle烧写模块重构(九)-Makefile的简化修改及工程模块的独立
- Dongle烧写模块重构(六)--单模块单功能下的命令模式尝试
- Dongle烧写模块重构(七)-加入当前已有的Dongle烧写功能
- Dongle烧写模块重构(八)--添加自测模块方便根据通信协议进行自测试
- PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据
- 一个继承于CButton的按钮控件类,实现Button背景色与文字的共存与改变,可以自行设计背景色
- 项目重构方案设计
- 重构-改善既有代码的设计:重新组织数据的16种方法(六)
- PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
- PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数【链接:http://www.cnblogs.com/baochuan/archive/2012/03/31/2425441.html】
- Java继承设计的基本技巧
- PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据【链接:】
- 重构-改善既有代码的设计:重新组织函数的九种方法(四)
- PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
- PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据
- 项目重构方案设计 推荐