設計模式 橋模式

2022-07-04 19:27:11 字數 2807 閱讀 7166

[設計模式]橋模式

1. 橋模式的設計理念

「橋模式」與「裝飾模式」一樣,是對於設計模式中的「單一職責」來進行修改的,其中「裝飾模式」是對於很多附加功能的修改,而橋模式是針對多維度。

橋模式是針對多維度實現裝配組合的,舉個例子,兩個維度,m*n,則要至少實現m*n個類;而如果使用橋模式,在編譯時去自由組合,只需要實現m+n個類。

下面的就是很形象的,其存在兩個維度:多平台(安卓,macos,windows)、多版本(簡約版,完美版)。

而使用橋模式,將其拆分為兩個維度,根據需要來編譯時自由組合不同的版本,這樣大大減少**量。

2. 反例

如下**,是乙個很典型的反例,可以看出生成了大量的類來滿足不同版本的需求

class

messager

};//

平台實現

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()

view code

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任意一種都可以。在軟體系統中,某些型別由於自身的邏輯,它具有兩個或多個維度的變化,那麼如何應對這種 多維度的變化 如何利用物件導向的技術來使得該型別能夠輕鬆的沿著多個方向進行變化,而又不引入額外...