设为首页 加入收藏

TOP

设计模式——桥接模式(C++实现)(一)
2017-10-10 12:52:47 】 浏览:1904
Tags:设计模式 桥接 模式 实现

 

  1 [root@ ~/learn_code/design_pattern/18_bridge]$ cat Abstraction.h
  2 #ifndef _ABSTRACTION_H_
  3 #define _ABSTRACTION_H_
  4 
  5 class AbstractionImplement;
  6 
  7 class Abstraction
  8 {
  9 public:
 10     virtual void Operation()=0;//定义接口,表示该类所支持的操作
 11     virtual ~Abstraction();
 12 protected:
 13     Abstraction();
 14 };
 15 
 16 class RefinedAbstractionA:public Abstraction
 17 {
 18 public:
 19     RefinedAbstractionA(AbstractionImplement* imp);//构造函数
 20     virtual void Operation();//实现接口
 21     virtual ~RefinedAbstractionA();//析构函数
 22 private:
 23     AbstractionImplement* _imp;//私有成员
 24 };
 25 
 26 class RefinedAbstractionB:public Abstraction
 27 {
 28 public:
 29     RefinedAbstractionB(AbstractionImplement* imp);//构造函数
 30     virtual void Operation();//实现接口
 31     virtual ~RefinedAbstractionB();//析构函数
 32 private:
 33     AbstractionImplement* _imp;//私有成员
 34 };
 35 #endif
 36 
 37 
 38 [root@ ~/learn_code/design_pattern/18_bridge]$ cat Abstraction.cpp
 39 #include "Abstraction.h"
 40 #include "AbstractionImplement.h"
 41 #include <iostream>
 42 
 43 using namespace std;
 44 
 45 Abstraction::Abstraction()
 46 {}
 47 
 48 Abstraction::~Abstraction()
 49 {}
 50 
 51 RefinedAbstractionA::RefinedAbstractionA(AbstractionImplement* imp)
 52 {
 53     this->_imp = imp;
 54 }
 55 
 56 RefinedAbstractionA::~RefinedAbstractionA()
 57 {
 58     delete this->_imp;
 59     this->_imp = NULL;
 60 }
 61 
 62 void RefinedAbstractionA::Operation()
 63 {
 64     cout << "RefinedAbstractionA::Operation" << endl;
 65     this->_imp->Operation();
 66 }
 67 
 68 RefinedAbstractionB::RefinedAbstractionB(AbstractionImplement* imp)
 69 {
 70     this->_imp = imp;
 71 }
 72 
 73 RefinedAbstractionB::~RefinedAbstractionB()
 74 {
 75     delete this->_imp;
 76     this->_imp = NULL;
 77 }
 78 
 79 void RefinedAbstractionB::Operation()
 80 {
 81     cout << "RefinedAbstractionB::Operation" << endl;
 82     this->_imp->Operation();
 83 }
 84 
 85 
 86 [root@ ~/learn_code/design_pattern/18_bridge]$ cat AbstractionImplement.h
 87 #ifndef _ABSTRACTIONIMPLEMENT_H_
 88 #define _ABSTRACTIONIMPLEMENT_H_
 89 
 90 //抽象基类,定义了实现的接口
 91 class AbstractionImplement
 92 {
 93 public:
 94     virtual void Operation()=0;//定义操作接口
 95     virtual ~AbstractionImplement();
 96 protected:
 97     AbstractionImplement();
 98 };
 99 
100 // 继承自AbstractionImplement,是AbstractionImplement的不同实现之一
101 class ConcreteAbstractionImplementA:public AbstractionImplement
102 {
103 public:
104     ConcreteAbstractionImplementA();
105     void Operation();//实现操作
106     ~ConcreteAbstractionImplementA();
107 protected:
108 };
109 
110 // 继承自AbstractionImplement,是AbstractionImplement的不同实现之一
111 class ConcreteAbstractionImplementB:public AbstractionImplement
112 {
113 public:
114     ConcreteAbstractionImplementB();
115     void Operation();//实现操作
116     ~ConcreteAbstractionImplementB();
117 protected:
118 };
119 #endif
120 
121 
122 [root@ ~/learn_code/design_pattern/18_bridge]$ cat AbstractionImplement.cpp
123 #include "AbstractionImplement.h"
124 #include <iostream>
125 
126 using namespace std;
127 
128 AbstractionImplement::AbstractionImplement()
129 {}
130 
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇【面向对象设计原则】之单一职责.. 下一篇activiti web流程设计器 工作流的..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目