橋接模式類似於抽象工廠模式。
抽象工廠將不同工廠生產的不同產品分離開來,這樣,在使用某些特定產品時新建乙個工廠即可,也可以很方便地對不同的產品進行修改,實現抽象與實現分離,即每個工廠的抽象與具體生產的產品細節分離。
橋接模式則相當於為每一種工廠的子類引入抽象的產品物件成員,使得每乙個新建的工廠都能生產所有的產品,實現抽象與實現分離。
#include
#include
#include
///note5橋接模式--最難理解的設計模式 --20190213
//常見的例子是不同品牌的手機執行不同的軟體,或者不同的作業系統,這裡
//嘗試舉乙個新例子,即不同的車裝不同的貨物。
//可以看出,這樣就成功封裝了不同需求下(不同車子)執行一些設計好的功能(不同貨物)而不需要為每個不同情況重新設計
//貨物類的抽象,假設每件貨物都有自報家門的功能
class
cargo
virtual
void
say()=
0;};
//一種貨物--盒子
class
box:
public cargo};
//另一種貨物--桶
class
bucket
:public cargo};
//載具類的抽象--載具擁有功能:裝載
class
vehicle};
//一種載具--小車,可以裝載所有貨物
class
car:
public vehicle
~car()
void
load()
private
: cargo *cargo;};
//另一種載具--卡車,可以裝載所有貨物
增加乙個常見的書中**,感覺寫的有點抽象,用上面的方式重新理解了一下
#include
using
namespace std;
// abstraction
//抽象介面
class
abstraction
protected
:abstraction()
};// abstractionimp
//抽象功能介面
class
abstractionimp
:public abstraction
protected
:abstractionimp()
};//實現功能介面
class
concreteabstractionimp
:public abstractionimp};
//重定義抽象介面,將抽象功能介面作為成員變數引入,修改功能為抽象功能介面的功能
class
refinedabstraction
:public abstraction
void
operation()
private
: abstractionimp *_imp;};
intmain()
按上面的例子來重新理解這篇**:
1、乙個抽象的載具類abstraction擁有裝載功能operation
2、從載具類繼承出乙個小車類abstractionimp
3、從小車繼承乙個小汽車類concreteabstractionimp實現小車的裝載功能
4、從載具類重新繼承乙個卡車類refinedabstraction,把小車作為成員引入,將小車的裝載功能給卡車
5、例項化小汽車類(我的小汽車)和卡車類(我的卡車),將我的小汽車引入到我的卡車
6、執行我的卡車的裝載功能,則成功連線上了我的小汽車的裝載功能
從零開始學習設計模式 簡單工廠模式
既然要寫關於設計模式的文章,當然是從最簡單的簡單工廠模式,或者說靜態工廠模式說起。一句話概括 簡單工廠模式其實就是根據不同的條件由工廠類去例項化不同的實現類,在使用的時候,並不需要去關心實現類的內部方法具體是怎麼實現的,只需要關心例項化了哪個類。所以簡單來說,簡單工廠模式就是 對共性開放,對個性封閉...
從零開始學習設計模式 策略模式
寫這個模式之前,實在是覺得策略模式和靜態工廠模式很像,無非就是從父類中抽象中公用的方法,然後在實體類中重寫具體的實現。但其實這兩者的區別還是有的,從關注的點來說,靜態工廠關注例項化的物件,而策略模式則更關注方法中不同的實現,先上 吧。抽象類和實現的實體,與靜態工廠一樣。抽象類 abstract cl...
如何從零開始設計系統
一直不滿足於只是做一兩個模組,想著自己設計乙個完整的系統,最近自己在寫乙個小玩意兒,有一些經驗和思考,故有了以下的內容。首先想說的是 這只是些個人體會,並不完善。如果有誰在看的話,希望不要被誤導。ok,言歸正轉。王道 多寫 少些花裡狐哨的名堂。基本原則 考慮到在開始設計乙個新的系統時多缺乏足夠的領域...