[設計模式]橋模式
1. 橋模式的設計理念
「橋模式」與「裝飾模式」一樣,是對於設計模式中的「單一職責」來進行修改的,其中「裝飾模式」是對於很多附加功能的修改,而橋模式是針對多維度。
橋模式是針對多維度實現裝配組合的,舉個例子,兩個維度,m*n,則要至少實現m*n個類;而如果使用橋模式,在編譯時去自由組合,只需要實現m+n個類。
下面的就是很形象的,其存在兩個維度:多平台(安卓,macos,windows)、多版本(簡約版,完美版)。
而使用橋模式,將其拆分為兩個維度,根據需要來編譯時自由組合不同的版本,這樣大大減少**量。
2. 反例
如下**,是乙個很典型的反例,可以看出生成了大量的類來滿足不同版本的需求
classview codemessager
};//
平台實現
class pcmessagerbase : public
messager
virtual
void
drawshape()
virtual
void
writetext()
virtual
void
connect()
};class mobilemessagerbase : public
messager
virtual
void
drawshape()
virtual
void
writetext()
virtual
void
connect()
};//
業務抽象
class pcmessagerlite : public
pcmessagerbase
virtual
void sendmessage(string
message)
virtual
void
sendpicture(image image)
};class pcmessagerperfect : public
pcmessagerbase
virtual
void sendmessage(string
message)
virtual
void
sendpicture(image image)
};class mobilemessagerlite : public
mobilemessagerbase
virtual
void sendmessage(string
message)
virtual
void
sendpicture(image image)
};class mobilemessagerperfect : public
mobilemessagerbase
virtual
void sendmessage(string
message)
virtual
void
sendpicture(image image)
};void
process()
3. 根據橋模式設計的**
如下,假設qq存在如上所示的六種版本,橋模式的**如下,可以看到其非常簡約,其乙個維度中+1只需要開發乙個類即可,而不用橋模式的**需要增加m(n)個類。
#include #include#include
using
namespace
std;
//功能
class
qqfunc
};//
平台維度基類
class
qqplatform //
初始化實現
virtual
void login() = 0; //
登入virtual
void logon() = 0; //
註冊virtual ~qqplatform(){}
};//
功能1 - 簡約版
class qqlite : public
qqfunc
void
sendpicture()
};//
功能2 - 完美版
class qqperfect : public
qqfunc
void
sendpicture()
};//
平台1 - windows平台
class qqwindows :public
qqplatform
virtual
void
login()
virtual
void
logon()
};//
平台2 - macos平台
class qqmacos :public
qqplatform
virtual
void
login()
virtual
void
logon()
};int
main()
設計模式 橋模式
講解 bridge1.cpp class messager 平台實現 class pcmessagerbase public messager virtual void drawshape virtual void writetext virtual void connect class mobil...
設計模式 橋接模式
橋接模式 多維 如車行駛在路上。車分各種品牌 各種型號各種排氣 道路分街道 告訴 山地等 駕駛員分男女 為了減少類的數量。如果按照繼承實現會照成大量冗餘的類,類的數量會相當之大 package com.cn.duduyu.bridgepattern.car public abstract class...
設計模式 橋接模式
設計模式 橋接模式 橋接模式 bridge pattern 對應英文名稱可以是bridge或者bradge任意一種都可以。在軟體系統中,某些型別由於自身的邏輯,它具有兩個或多個維度的變化,那麼如何應對這種 多維度的變化 如何利用物件導向的技術來使得該型別能夠輕鬆的沿著多個方向進行變化,而又不引入額外...