日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

[置顶]       设计模式之结构类模式——桥梁模式

發(fā)布時間:2025/3/17 asp.net 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [置顶]       设计模式之结构类模式——桥梁模式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

橋梁模式(Bridge Patter)也叫做橋接模式,是一個比較簡單的模式。

?

定義:

將抽象和實現(xiàn)解耦,使得兩者可以獨立地變化。

?

通用類圖:

?

● Abstraction——抽象化角色

它主要的職責是定義出該角色的行為,同時保存一個對實現(xiàn)化角色的引用,該角色一般是抽象類。

● Implementro——實現(xiàn)化角色

它是接口或者抽象類,定義角色必須的行為和屬性。

● RefinedAbstraction——修正抽象化角色

它引用實現(xiàn)化角色對抽象化角色進行修正。

● ConcreteImplementor——具體實現(xiàn)化角色

它實現(xiàn)接口或抽象類定義的方法和屬性。

?

通用代碼:

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 /** ?* 實現(xiàn)化角色 ?* ?* @author Administrator ?* ?*/ publicinterfaceImplementor { ????// 基本方法 ????publicvoiddoSomething(); ????publicvoiddoAnything(); }
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 /** ?* 具體實現(xiàn)化角色 ?* ?* @author Administrator ?* ?*/ publicclassConcreteImplementor1implementsImplementor { ????publicvoiddoAnything() { ????????// 業(yè)務處理邏輯 ????} ????publicvoiddoSomething() { ????????// 業(yè)務處理邏輯 ????} }
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 /** ?* 具體實現(xiàn)化角色 ?* ?* @author Administrator ?* ?*/ publicclassConcreteImplementor2implementsImplementor { ????publicvoiddoAnything() { ????????// 業(yè)務處理邏輯 ????} ????publicvoiddoSomething() { ????????// 業(yè)務處理邏輯 ????} }
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 /** ?* 抽象化角色 ?* ?* @author Administrator ?* ?*/ publicabstractclassAbstraction { ????// 定義對實現(xiàn)化角色的引用 ????privateImplementor imp; ????// 約束子類必須實現(xiàn)該構造函數(shù) ????publicAbstraction(Implementor _imp) { ????????this.imp = _imp; ????} ????// 自身的行為和屬性 ????publicvoidrequest() { ????????this.imp.doSomething(); ????} ????// 獲得實現(xiàn)化角色 ????publicImplementor getImp() { ????????returnthis.imp; ????} }
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 /** ?* 具體抽象化角色 ?* ?* @author Administrator ?* ?*/ publicclassRefinedAbstractionextendsAbstraction { ????// 覆寫構造函數(shù) ????publicRefinedAbstraction(Implementor _imp) { ????????super(_imp); ????} ????// 修正父類的行為 ????@Override ????publicvoidrequest() { ????????/* ?????????* 業(yè)務處理 ?????????*/ ????????super.request(); ????????super.getImp().doAnything(); ????} }
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 /** ?* 場景類 ?* ?* @author Administrator ?* ?*/ publicclassClient { ????/** ?????* @param args ?????*/ ????publicstaticvoidmain(String[] args) { ????????// 定義一個實現(xiàn)化角色 ????????Implementor imp = newConcreteImplementor1(); ????????// 定義一個抽象化角色 ????????Abstraction abs = newRefinedAbstraction(imp); ????????// 執(zhí)行行文 ????????abs.request(); ????} }

?

橋梁模式是一個非常簡單的模式,它只是使用了類間的聚合關系、繼承、覆寫等常用功能,但是它卻提供了一個非常清晰、穩(wěn)定的架構。

?

橋梁模式的優(yōu)點:

● 抽象和實現(xiàn)分離

這是橋梁模式的主要特點,它完全是為了解決繼承的缺點而提出的設計模式。在該模式下,實現(xiàn)可以不受抽象的約束,不用再綁定在一個固定的抽象層次上。

● 優(yōu)秀的擴展能力

?

● 實現(xiàn)細節(jié)對客戶透明

客戶不用關心細節(jié)的實現(xiàn),它已經由抽象層通過聚合關系完成了封裝。

?

橋梁模式的使用場景:

● 不希望或不適用使用繼承的場景

例如繼承層次過渡、無法更細化設計顆粒等場景,需要考慮使用橋梁模式。

● 接口或抽象類不穩(wěn)定的場景

明知道接口不穩(wěn)定還想通過實現(xiàn)或繼承來實現(xiàn)業(yè)務需求,那是得不償失的,也是比較失敗的做法。

● 重用性要求較高的場景

設計的顆粒度越細,則被重用的可能性就越大,而采用繼承則受父類的限制,不可能出現(xiàn)太細的顆粒度。

?

橋梁模式的注意事項:

使用橋梁模式時主要考慮如何拆分抽象和實現(xiàn),并不是一涉及繼承就要考慮使用該模式,那還要繼承干什么。

橋梁模式的意圖還是對變化的封裝,盡量把可能變化的因素封裝到最細、最小的邏輯單元中,避免風險擴散。

系統(tǒng)設計時,發(fā)現(xiàn)類的繼承有N層時,可以考慮使用橋梁模式。

轉載于:https://blog.51cto.com/3001448/1205864

總結

以上是生活随笔為你收集整理的[置顶]       设计模式之结构类模式——桥梁模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。