C++的多态与适配器模式

70 篇文章 1 订阅
24 篇文章 0 订阅

       原创文章,转载请注明出处,谢谢!       
       作者:清林,博客名:飞空静渡

 

我们知道,c++的多态可以为不同的实现提供同一个接口,适配器模式也可以让同一接口得到不同的实现。下面我们通过一个例子来说明这两个东东 :)

 

假设,我要设计一套对磁盘分区进行操作的类,这个类有三个接口,分别用于打开磁盘,读磁盘,写磁盘和关闭打开的磁盘。这里,我们可以封装系统对磁盘读写的函数。

在linux或unix下这些函数是:open、read、write和close。

在windows下,这些函数是:CreateFile、ReadFile、WriteFile和CloseHandle。

当对磁盘读写时,这两套APIs是有很大差别的,一个大的差别是,windows下的这些函数对磁盘操作是以扇区为单位的。

 

现在,我们就用多态的方法来设计这个类,如下是这些类的伪代码:

 

 

 

如果要使用,就可能是这样的:

 

 

 

上面所说的就是利用c++的多态来实现不同平台的io操作。

 

但是,如果我已经做好了一个项目,这个项目是linux下的,并且我也不想改变代码并移植到wndows下呢,我们该对上面的代码如何改变。

下面使用适配器模式来做:

现在我们已经有了linux下的这个操作类:

 

 

因此,我们同样设计一个类似的针对wndows下的io类:

 

 

并且定义相应的适配器类:

 

这样,我们就可以这样使用了

 

 

适配器模式是在没有改变代码的情况下,把各个功能封装起来达到统一使用的功能。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值