设计模式——桥接模式

        设计模式是人们从长期的软件开发实战中总结出来的一些经验之谈,为软件领域中的开发人员提供了一种使用专家设计经验的有效途径,通常是多个设计模式结合使用。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,只有通过大量的编程实践才能真正领悟设计模式的精髓。在参加校招前我翻看了部分设计模式相关的书,对于每个设计模式模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式》两本书以及借鉴其他博客园博文的优秀部分。本文介绍桥接模式的实现和一些使用场景。希望对大家加深对设计模式的理解有一点帮助。

      [DP]书上定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化。考虑计算机操作系统,有多种配置的计算机,同样也有多款操作系统。如何运用桥接模式呢?可以将操作系统和计算机分别抽象出来,让它们各自发展,减少它们的耦合度(高内聚低耦合,这是软件开发的规则之一)。当然了,两者之间有标准的接口。这样设计,不论是对于计算机,还是操作系统都是非常有利的。

 

一、举例

N年前:

        计算机最先出来时,软件和硬件是一绑在一起的,比如IBM出了一台电脑,上面有一个定制的系统,假如叫 IBM_Win,这个IBM_Win系统当然不能在HP电脑上运行,同样HP出的HP_Win系统也不能运行在IBM上。


这时如果有一家新公司Apple出了一台新电脑,那么这个公司也要开发自己的系统 Apple_Win,Apple_Linux。

其实,上面几家公司开发的软件和硬件在很多地方都有相似之处,如果每家公司都做自己的系统,这意味着资源和人员的极大浪费。

这时,无论出现新的系统,还是出现新的公司,对这种设计模式的修改都是很大的。

 

N年后:

Windows出现了,Linux出现了,软件和硬件终于分离了。这时的系统比如 Windows 既能在IBM机器上运行,也能在HP机器上运行了。


这时软件专注于软件,硬件专注于硬件。这也是推动计算机系统不断发展的原因(更加专注了嘛),也是推动更多公司出现的原因(成本更低了嘛)。

不管是出现了新硬件平台,还是出现新的OS,大家都能专注于自己领域。也就是外界的变化很大,但对这种模式冲击却很小

 

代码实现:

//操作系统 
classOS   
{   
public:   
    virtualvoidRun(){}   
}; 
 
//Windows 
classWindowOS:publicOS   
{ 
public: 
        voidRun(){cout<<"运行Windows"<
    
    
     
     Run();}   
}; 
 
//HP计算机 
classHPComputer:publicComputer   
{ 
public: 
        voidInstallOS(OS*os){os->Run();}   
};   
 
 
intmain()   
{   
        OS*os1=newWindowOS(); 
        OS*os2=newLinuxOS(); 
       
        Computer*computer1=newIBMComputer(); 
        computer1->InstallOS(os1); 
        computer1->InstallOS(os2); 
       
        return0; 
} 
    
    

二、桥接模式

定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化

换句话出,就是要把实现独立出来,让它们各自变化,而不会影响其它实现,这样可以降低耦合性。

 

       为什么叫Bridge 模式?从上图中可以看出,它像一座桥,桥两边的系统相对独立,左边是抽象部分,右边是实现部分。

 

三. 组合、聚合复用原则


        由上面两个种结构图的对比,我们可以引出一个原则:尽量使用组合、聚合,尽量不要使用类继承。

 

        好啦,关于桥接模式就介绍到这里了,希望你已经掌握了这个模式并且可以熟练的使用它,那么本博文的效果就达到了。如果你还觉得意犹未尽,那么可以去看看博主的其他设计模式的介绍哦。

       关于设计模式,我推荐大家看看以下博客写的博文,关于设计模式的讲解将的特别好,我从中学习了很多,我的设计模式中的部分博文就是从这里借鉴过来的。

    博客链接:http://blog.csdn.net/wuzhekai1985

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值