首页 > 其他 > 详细

桥接模式

时间:2014-09-03 18:31:27      阅读:258      评论:0      收藏:0      [点我收藏+]

桥接模式网上都讲得很复杂,我总结一下就是一句话:

如果多个维度变化,每个维度都有一个基类,嗯,就这样

#include <iostream>

using namespace std;

class Os {
  public:
    virtual void SetOs() = 0;
};

class LinuxOs : public Os {
  public:
    void SetOs() {
      cout<< "set linux" << endl;
    }
};
class WindowsOs : public Os {
  public:
    void SetOs() {
      cout<< "set windows" << endl;
    }
};

class MacOs : public Os {
  public:
    void SetOs() {
      cout<< "set mac" << endl;
    }
};


class Computer {
  public:
    Computer(Os* s) : os_(s) {
    }
    virtual ~Computer() {
      if (os_) {
        delete os_;
      }
      os_ = NULL;
    }
  public:
    virtual void InstallOs() = 0;
  protected:
    Os* os_;
};

class DellComputer : public Computer {
  public:
    DellComputer(Os* s) : Computer(s) {
    }
  public:
    void InstallOs() {
      cout<< "DellComputer:" << endl;
      os_->SetOs();
    }
};

class MacComputer : public Computer{
  public:
    MacComputer(Os* s) : Computer(s) {
    }
  public:
    void InstallOs() {
      cout<< "MacComputer:" << endl;
      os_->SetOs();
    }
};

class IbmComputer : public Computer{
  public:
    IbmComputer(Os* s) : Computer(s) {
    }
  public:
    void InstallOs() {
      cout<< "IbmComputer:" << endl;
      os_->SetOs();
    }
};
#include "main.h"

using namespace std;


int main(int argc, char* argv[]) {
  Computer* c = new DellComputer(new WindowsOs);
  c->InstallOs();
  Computer* c2 = new MacComputer(new MacOs);
  c2->InstallOs();
  Computer* c3 = new IbmComputer(new LinuxOs);
  c3->InstallOs();

}


桥接模式

原文:http://my.oschina.net/hejiula/blog/309748

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!