當前位置:
首頁 >
bridge模式
發布時間:2025/4/16
53
豆豆
在軟件系統中,某些類型由于自身的邏輯,它具有兩個或多個維度的變化,那么如何應對這種“多維度的變化”?如何利用面向對象的技術來使得該類型能夠輕松的沿著多個方向進行變化,而又不引入額外的復雜度?這就要使用Bridge模式。橋模式的意圖是將抽象和實現分開。結構圖如下所示:
代碼如下:日志系統可以是文本日志也可以采用數據庫輸出方式,系統平臺可以是Qt也可以是Java
#include<QString>class LogAbstract { public:LogAbstract();virtual ~LogAbstract();virtual void WriteLog(QString log) = 0; }; #include "logabstract.h"LogAbstract::LogAbstract() { } LogAbstract::~LogAbstract() {}#include<QString> class LogImpt { public:LogImpt();virtual ~LogImpt();virtual void ExeLog(QString log) = 0; }; #include "logimpt.h"LogImpt::LogImpt() { } LogImpt::~LogImpt() {} #include"logabstract.h" #include"logimpt.h" class LogTextAbstract { public:LogTextAbstract(LogImpt* logImpt);virtual ~LogTextAbstract();virtual void WriteLog(QString log); protected:LogImpt* logImpt; }; #include "logtextabstract.h"LogTextAbstract::LogTextAbstract(LogImpt* logImpt) {this->logImpt = logImpt; } LogTextAbstract::~LogTextAbstract() { }void LogTextAbstract::WriteLog(QString log) {logImpt->ExeLog(log);} #include"logimpt.h" class LogQtImpt { public:LogQtImpt();virtual ~LogQtImpt();virtual void ExeLog(QString log); }; #include "logqtimpt.h" #include<QDebug> LogQtImpt::LogQtImpt() { } LogQtImpt::~LogQtImpt() { } void LogQtImpt::ExeLog(QString log) {qDebug()<<log; } //如此以來,抽象和實現就可以分開了,使用方式如下LogImpt *impt = (LogImpt*)(new LogQtImpt());LogAbstract *abLog = (LogAbstract*)(new LogTextAbstract(impt));abLog->WriteLog("Hello");?
?
轉載于:https://www.cnblogs.com/phoenixlaozhu/archive/2012/07/27/2612430.html
總結
- 上一篇: EasyUI之简单实现Datagrid分
- 下一篇: Oracle 11g Release 1