Dongle烧写模块重构(一)--最基本的设计,以继承可以组织多个方案商

一、Dongle烧写模块的需求:

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这个函数,就会采用基类的实现,而这不一定是新加入的方案商所希望的。所以这里还需要做其他处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值