橋接模式(bridge pattern)
目的:
將抽象與實現分離,將兩種不同變化屬性分離。
具體點就是說,有兩個維度,分別是抽象維和實現維,通過橋接模式,可以實現兩個維度的分別演變而互不影響。
用途:
用於對於一件事物具有兩種不用的變化屬性,每種變化屬性都有幾種不同的方案。兩種屬性可以自由組合。
應用舉例:
逛商場買衣服時,主要有兩種考慮情況,款式和顏色(當然**也是因素之一,在此不考慮,力求問題簡單化-_-)。如款式分修身,寬鬆等,顏色有橙色,綠色,還有一些很奇怪的組合色-_-。程式設計師小賽去買衣服,向店員詢問是否有橙色體恤可以試一下。店員恰巧也是個程式設計師,心想乾脆設計乙個模型,能夠表示款式與顏色之間的組合。
上**:
樣式類介面:
/*h檔案*/
#pragma once
#include
using namespace std;
class pattern
~pattern(void){}
virtual void operation() = 0;
};/*cpp檔案*/
#include "pattern.h"
/*建構函式和複製建構函式均放到h檔案內部初始化*/
樣式a:
/*h檔案*/
#pragma once
#include "pattern.h"
#include "scolor.h"
class patterna :public pattern ;
/*cpp檔案*/
#include "patterna.h"
patterna::patterna(scolor* color)
patterna::~patterna(void)
void patterna::operation()
樣式b:
/*h檔案*/
#pragma once
#include "pattern.h"
#include "scolor.h"
class patternb :public pattern
;/*cpp檔案*/
#include "patternb.h"
patternb::patternb(scolor* color)
patternb::~patternb(void)
void patternb::operation()
顏色類介面:
/*h檔案*/
#pragma once
#include
using namespace std;
class scolor
~scolor(void){}
virtual void operation() = 0;
};/*cpp檔案*/
#include "scolor.h"
/*建構函式和析構函式均在h檔案實現*/
顏色a:
/*h檔案*/
#pragma once
#include "scolor.h"
class scolora : public scolor
;/*cpp檔案*/
#include "scolora.h"
scolora::scolora(void)
scolora::~scolora(void)
void scolora::operation()
顏色b:
/*h檔案*/
#pragma once
#include "scolor.h"
class scolorb : public scolor
;/*cpp檔案*/
#include "scolorb.h"
scolorb::scolorb(void)
scolorb::~scolorb(void)
void scolorb::operation()
測試:
#include
#include "pattern.h"
#include "patterna.h"
#include "patternb.h"
#include "scolor.h"
#include "scolora.h"
#include "scolorb.h"
using namespace std;
int main()
設計模式 橋接模式
橋接模式 多維 如車行駛在路上。車分各種品牌 各種型號各種排氣 道路分街道 告訴 山地等 駕駛員分男女 為了減少類的數量。如果按照繼承實現會照成大量冗餘的類,類的數量會相當之大 package com.cn.duduyu.bridgepattern.car public abstract class...
設計模式 橋接模式
設計模式 橋接模式 橋接模式 bridge pattern 對應英文名稱可以是bridge或者bradge任意一種都可以。在軟體系統中,某些型別由於自身的邏輯,它具有兩個或多個維度的變化,那麼如何應對這種 多維度的變化 如何利用物件導向的技術來使得該型別能夠輕鬆的沿著多個方向進行變化,而又不引入額外...
設計模式 橋接模式
橋接模式 用來解決多維度變化問題,一般適用於解決乙個物件有多個屬性同時變化,通過橋接的方式使多種屬性變化解耦,場景 1.畫筆 大小有大中小三種,每種對應5種不同的顏色 這裡的變化屬性為大小 顏色 詳解 抽象類 abstraction 定義抽象類的介面,維護乙個指向implementor型別物件的指標...