设计模式C++实现(10)——桥接模式

[复制链接]

该用户从未签到

759

主题

763

帖子

4660

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4660
跳转到指定楼层
楼主
发表于 2018-1-7 11:13:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

想要查看内容赶紧注册登陆吧!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍桥接模式的实现。       [DP]书上定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化。考虑装操作系统,有多种配置的计算机,同样也有多款操作系统。如何运用桥接模式呢?可以将操作系统和计算机分别抽象出来,让它们各自发展,减少它们的耦合度。当然了,两者之间有标准的接口。这样设计,不论是对于计算机,还是操作系统都是非常有利的。下面给出这种设计的UML图,其实就是桥接模式的UML图。
         给出C++的一种实现:
  1. //操作系统
  2. class OS
  3. {
  4. public:
  5.         virtual void InstallOS_Imp() {}
  6. };
  7. class WindowOS: public OS
  8. {
  9. public:
  10.         void InstallOS_Imp() { cout<<"安装Window操作系统"<<endl; }
  11. };
  12. class LinuxOS: public OS
  13. {
  14. public:
  15.         void InstallOS_Imp() { cout<<"安装Linux操作系统"<<endl; }
  16. };
  17. class UnixOS: public OS
  18. {
  19. public:
  20.         void InstallOS_Imp() { cout<<"安装Unix操作系统"<<endl; }
  21. };
  22. //计算机
  23. class Computer
  24. {
  25. public:
  26.         virtual void InstallOS(OS *os) {}
  27. };
  28. class DellComputer: public Computer
  29. {
  30. public:
  31.         void InstallOS(OS *os) { os->InstallOS_Imp(); }
  32. };
  33. class AppleComputer: public Computer
  34. {
  35. public:
  36.         void InstallOS(OS *os) { os->InstallOS_Imp(); }
  37. };
  38. class HPComputer: public Computer
  39. {
  40. public:
  41.         void InstallOS(OS *os) { os->InstallOS_Imp(); }
  42. };
复制代码
客户使用方式:
  1. int main()
  2. {
  3.         OS *os1 = new WindowOS();
  4.         OS *os2 = new LinuxOS();
  5.         Computer *computer1 = new AppleComputer();
  6.         computer1->InstallOS(os1);
  7.         computer1->InstallOS(os2);
  8. }
复制代码


分享到:  QQ好友和群QQ好友和群
收藏收藏
回复

使用道具 举报

快速回复高级模式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表