中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

襄陽營銷型網(wǎng)站愛站網(wǎng)絡(luò)挖掘詞

襄陽營銷型網(wǎng)站,愛站網(wǎng)絡(luò)挖掘詞,國內(nèi)crm系統(tǒng)十大排名,手機app網(wǎng)站建設(shè)什么是橋接模式? 橋接模式(Bridge Pattern)是一個用來解耦的設(shè)計模式,它將抽象層和實現(xiàn)層分離開,讓它們可以獨立變化。用最簡單的話來說,就是讓你能夠改變抽象的功能和具體的實現(xiàn),而不需要修改…

什么是橋接模式?

橋接模式(Bridge Pattern)是一個用來解耦的設(shè)計模式,它將抽象層實現(xiàn)層分離開,讓它們可以獨立變化。用最簡單的話來說,就是讓你能夠改變抽象的功能具體的實現(xiàn),而不需要修改對方的代碼。

舉個例子,想象你在做一個圖形繪制的程序,你有很多圖形(比如圓形、方形),而且每種圖形可能有不同的繪制方式(比如屏幕繪制、打印機繪制)。如果你把所有的圖形和繪制方式都寫在一起,每次你增加一種新的繪制方式或新圖形時,你都要修改大量的代碼,這樣就會讓系統(tǒng)變得很復(fù)雜。

橋接模式的思路是:把**圖形(抽象)繪制方式(實現(xiàn))**分開,每一部分都可以獨立變化,互不干擾。這樣一來,增加新的圖形或者新的繪制方式時,就不需要修改現(xiàn)有的代碼,只需要擴展新的類即可。

橋接模式的結(jié)構(gòu)

橋接模式有兩個重要部分:

  1. 抽象部分(比如圖形的類型,如圓形、方形等)
  2. 實現(xiàn)部分(比如具體的繪制方式,如屏幕繪制、打印繪制等)

這兩個部分通過“橋”連接起來,形成了一個靈活可擴展的結(jié)構(gòu)。下面的代碼結(jié)構(gòu)就能幫助你理解這一點。

橋接模式的代碼示例

假設(shè)我們要實現(xiàn)一個圖形繪制的程序,支持不同的圖形(圓形、方形)和不同的繪制方式(屏幕繪制、打印機繪制)。我們來看看怎么用橋接模式來實現(xiàn)。

#include <iostream>
#include <string>// 繪圖接口(實現(xiàn)類接口)
class DrawingAPI {
public:virtual void drawCircle(double x, double y, double radius) = 0;virtual ~DrawingAPI() = default;
};// 具體實現(xiàn):屏幕繪制
class ScreenDrawingAPI : public DrawingAPI {
public:void drawCircle(double x, double y, double radius) override {std::cout << "在屏幕上繪制圓形,位置: (" << x << ", " << y << "), 半徑: " << radius << std::endl;}
};// 具體實現(xiàn):打印機繪制
class PrinterDrawingAPI : public DrawingAPI {
public:void drawCircle(double x, double y, double radius) override {std::cout << "在打印機上繪制圓形,位置: (" << x << ", " << y << "), 半徑: " << radius << std::endl;}
};// 圖形類(抽象類)
class Shape {
protected:DrawingAPI* drawingAPI;  // 這里持有一個指向繪圖實現(xiàn)類的指針public:Shape(DrawingAPI* api) : drawingAPI(api) {}  // 通過構(gòu)造函數(shù)注入具體實現(xiàn)類virtual void draw() = 0;  // 繪制圖形的接口virtual void resize(double factor) = 0;  // 調(diào)整圖形大小virtual ~Shape() = default;
};// 擴展的具體圖形類:圓形
class Circle : public Shape {
private:double x, y, radius;  // 圓形的坐標和半徑public:Circle(double x, double y, double radius, DrawingAPI* api) : Shape(api), x(x), y(y), radius(radius) {}void draw() override {drawingAPI->drawCircle(x, y, radius);  // 將繪制任務(wù)委托給具體實現(xiàn)}void resize(double factor) override {radius *= factor;  // 調(diào)整圓形的半徑}
};int main() {ScreenDrawingAPI screenAPI;  // 創(chuàng)建屏幕繪制實現(xiàn)PrinterDrawingAPI printerAPI;  // 創(chuàng)建打印機繪制實現(xiàn)// 創(chuàng)建圓形對象,使用不同的繪制方式Circle circle1(1, 2, 3, &screenAPI);  // 在屏幕上繪制Circle circle2(5, 6, 4, &printerAPI);  // 在打印機上繪制circle1.draw();  // 屏幕繪制圓形circle2.draw();  // 打印機繪制圓形circle1.resize(2.0);  // 改變圓形大小circle1.draw();  // 再次繪制,使用屏幕繪制return 0;
}

代碼講解

讓我們一步步來解讀這段代碼,看看橋接模式是如何工作的。

1. 繪圖接口(DrawingAPI
class DrawingAPI {
public:virtual void drawCircle(double x, double y, double radius) = 0;virtual ~DrawingAPI() = default;
};

這個類定義了一個繪制圓形的方法 drawCircle,它只是一個接口,并不做具體的繪制工作。任何具體的繪制方式(比如屏幕繪制、打印機繪制)都需要實現(xiàn)這個接口。

2. 具體的繪圖實現(xiàn)(ScreenDrawingAPIPrinterDrawingAPI
class ScreenDrawingAPI : public DrawingAPI {
public:void drawCircle(double x, double y, double radius) override {std::cout << "在屏幕上繪制圓形,位置: (" << x << ", " << y << "), 半徑: " << radius << std::endl;}
};class PrinterDrawingAPI : public DrawingAPI {
public:void drawCircle(double x, double y, double radius) override {std::cout << "在打印機上繪制圓形,位置: (" << x << ", " << y << "), 半徑: " << radius << std::endl;}
};

這兩個類分別實現(xiàn)了 DrawingAPI 接口,提供了不同的繪制方式。ScreenDrawingAPI 在屏幕上繪制圓形,PrinterDrawingAPI 在打印機上繪制圓形。

3. 抽象類(Shape
class Shape {
protected:DrawingAPI* drawingAPI;  // 持有一個繪圖實現(xiàn)類的指針public:Shape(DrawingAPI* api) : drawingAPI(api) {}  // 通過構(gòu)造函數(shù)注入具體的繪圖實現(xiàn)virtual void draw() = 0;  // 繪制圖形的接口virtual void resize(double factor) = 0;  // 調(diào)整圖形大小
};

Shape 是一個抽象類,它定義了所有圖形的共同接口:draw()resize()。關(guān)鍵是它持有一個 DrawingAPI 的指針,這樣它可以將具體的繪制任務(wù)委托給實現(xiàn)類。

4. 具體圖形類(Circle
class Circle : public Shape {
private:double x, y, radius;  // 圓形的坐標和半徑public:Circle(double x, double y, double radius, DrawingAPI* api) : Shape(api), x(x), y(y), radius(radius) {}void draw() override {drawingAPI->drawCircle(x, y, radius);  // 調(diào)用具體繪圖實現(xiàn)的drawCircle方法}void resize(double factor) override {radius *= factor;  // 改變圓形的半徑}
};

Circle 類繼承自 Shape,并實現(xiàn)了 draw()resize() 方法。它通過 drawingAPI 指針來調(diào)用具體的繪制方法,實現(xiàn)了與繪制方式的解耦。

5. 客戶端代碼

main 函數(shù)中,我們創(chuàng)建了兩個 Circle 對象,分別使用了 ScreenDrawingAPIPrinterDrawingAPI 作為繪制實現(xiàn)。通過調(diào)用 circle1.draw()circle2.draw(),我們可以看到兩個不同的繪制方式。

int main() {ScreenDrawingAPI screenAPI;  // 屏幕繪制實現(xiàn)PrinterDrawingAPI printerAPI;  // 打印機繪制實現(xiàn)// 創(chuàng)建兩個圓形對象,分別使用不同的繪制方式Circle circle1(1, 2, 3, &screenAPI);Circle circle2(5, 6, 4, &printerAPI);circle1.draw();  // 屏幕繪制圓形circle2.draw();  // 打印機繪制圓形circle1.resize(2.0);  // 改變圓形大小circle1.draw();  // 再次繪制,使用屏幕繪制return 0;
}

總結(jié)

橋接模式的主要優(yōu)點就是解耦

。我們把抽象部分(如圖形類型)和實現(xiàn)部分(如繪制方式)分開,避免了兩者之間的緊耦合。這樣我們可以很方便地擴展新的圖形類型或新的繪制方式,而不需要修改現(xiàn)有的代碼。

比如,如果你以后需要支持新的繪制方式(比如在Web上繪制),你只需要實現(xiàn)一個新的 DrawingAPI 類,不用改動任何圖形類;同樣,如果你需要增加新的圖形類型(比如矩形),只需要擴展 Shape 類,不需要改動任何繪制實現(xiàn)。

橋接模式適用于需要將抽象和實現(xiàn)分離,并且它們可能會獨立變化的場景。

本文由mdnice多平臺發(fā)布

http://www.risenshineclean.com/news/57688.html

相關(guān)文章:

  • 深圳最新消息公布長沙seo服務(wù)
  • 做調(diào)查問卷賺錢網(wǎng)站有哪些培訓seo哪家學校好
  • 網(wǎng)站建設(shè)投訴去哪里投訴軟件推廣的渠道是哪里找的
  • 什么是網(wǎng)站域名?會計培訓班要多少錢一般要學多久
  • 電子商務(wù)網(wǎng)站建設(shè)與管理習題答案免費服務(wù)器
  • 免費網(wǎng)站推廣工具有哪些百度搜索排行榜前十名
  • 如何做網(wǎng)站的的關(guān)鍵詞網(wǎng)絡(luò)培訓學校
  • 免費做網(wǎng)站wxp114百度愛采購優(yōu)化軟件
  • 長春市疫情最新消息今天行動軌跡湖南網(wǎng)站seo營銷
  • 258做網(wǎng)站怎么樣網(wǎng)站排名優(yōu)化+o+m
  • 自己做優(yōu)惠劵網(wǎng)站賺錢嗎網(wǎng)站seo是干什么的
  • 響應(yīng)式網(wǎng)站新聞部分怎么做aso優(yōu)化軟件
  • 順徳網(wǎng)站建設(shè)公司有哪些搜索關(guān)鍵詞排名優(yōu)化軟件
  • 臨沂品牌網(wǎng)站推廣人民日報今日新聞
  • ui設(shè)計技術(shù)培訓學校十堰seo優(yōu)化
  • 房產(chǎn)這么做網(wǎng)站才多點擊量2023新聞熱點摘抄
  • 佳木斯建設(shè)工程交易中心網(wǎng)站自助建站
  • 建筑培訓網(wǎng)站網(wǎng)絡(luò)廣告策劃的內(nèi)容
  • 青縣做網(wǎng)站價格好看的網(wǎng)站ui
  • 手機網(wǎng)站開放關(guān)鍵詞排名點擊軟件工具
  • 怎么做網(wǎng)站報告網(wǎng)絡(luò)輿情分析研判報告
  • 推薦10個網(wǎng)站電子商務(wù)網(wǎng)站開發(fā)
  • 天眼查 企業(yè)查詢官網(wǎng)seo網(wǎng)站推廣優(yōu)化
  • 網(wǎng)站設(shè)計網(wǎng)站開發(fā)百度推廣投訴人工電話
  • 西安網(wǎng)站策劃公司一呼百應(yīng)推廣平臺
  • 手機端首頁尺寸多少seo排名計費系統(tǒng)
  • 做燈箱片的設(shè)計網(wǎng)站站長工具箱
  • 網(wǎng)站建設(shè)51jyoo360建網(wǎng)站
  • 競價移動網(wǎng)站b站網(wǎng)站推廣mmm
  • 怎樣用自己的電腦做網(wǎng)站seo在線培訓機構(gòu)排名