設計模式實際工作實踐 橋梁模式

2021-10-11 12:16:24 字數 1709 閱讀 3848

1、多維度分析。

2、適用於有可能多個維度組合形成乙個場景,並且各個維度可能分別演化的場景

3、為自己工作,為自己的系統工作,做自己的老闆,形成正迴圈:打磨當前工作的核心關鍵能力——>高效能工作——>更多時間打磨自己的系統——>更高效能工作——>打磨下個層次工作的核心關鍵能力……

4、核心競爭力,是指你擁有的(獨特的)知識經驗組合,經過你思維邏輯的組織梳理,在實踐中產生無可替代的價值。打造自己的tms系統(t:專業技術;m:溝通管理、s:行業解決方案),利用複利效應,讓系統為自己工作。

為什麼初學者有時候無法理解設計模式?

因為沒有遇到過問題,設計模式實際上是為了解決某種場景下的問題產生的優雅解決方案。

所以看了很多設計模式的書,由概念出發,反向舉例子與人的認知方向正好衝突。

設計模式的學習,應該通過問題引出,學習者有了自己的實現之後,再去給出設計模式的實現,經過對比才會讓學習者認識深刻,有一種思維上的爽快感!

並且,設計模式作為一種解決問題的模式工具,為什麼每本設計模式書裡面都要將類圖畫的那麼複雜?

不應該掌握其解決問題的適用場景,如果到了使用的時候,再去翻看一下書看下怎麼實現不就可以了嗎?

大腦用來思考,不是用來儲存。

中國話叫做:君子不器。

轉入正題

先給乙個結論:

橋梁模式,解決的是某個場景下,有多個維度分別演化的問題

首先來看一下兩個問題:

讀者可以先思考一下自己如何實現。

我們首先進行維度分析(ooa)看一下一下場景描述。

這段描述裡面有兩個關鍵維度:通知型別、通知渠道。

維度1:通知型別,有可能是一般通知、緊急通知……

這兩個維度,每乙個都是有可能單獨變化的。

簡單的類圖如下,核心原理就是拆解成單一維度,然後統一組裝,最大化的解耦:

每乙個外部系統的報文協議都不一樣。

一種最初級的簡陋方案是:每次都在web.xml中加上對映路徑(或者controller中加入),每乙個路徑都特殊處理。

但是,這種複雜的變動情況,肯定不符合程式設計師的審美觀。

物件導向開發的乙個大原則就是:

封裝變化

對於這種場景,再進行一下維度分析。

我們可以看到,一次請求也有兩種維度:

通訊協議維度,例如http、socket、mq……

報文協議維度,webservice的soap報文、json格式報文、xml格式報文、定長字段格式報文等等

而我們內部系統,通常有乙個自己的統一模型(假設叫做:requestmsg),我們要做的是要支援各種通訊協議、各種報文協議的組合變幻。

當然,如果企業內部有閘道器的話,這一層的轉換處理可能是在閘道器進行處理了,業務系統只需要處理業務即可了。

對於此部分的橋接模式處理類圖如下:

設計模式 橋梁模式

定義抽象公司 public abstract class corp 上方是模板方法 下面是房地產公司 public class housecorp extends corp 賣房子 protected void sell 賺錢 public void makemoney 服裝公司 public cl...

設計模式之橋梁模式

其實大家都是朋友,也不能人人都像小明那麼勢利吧。小剛就做的比較好,一打眼就知道誰是窮人誰又是富人了。不過沒關係窮人有窮人的玩法富人有富人的玩法嘛 這段邏輯用 怎麼實現?首先是乙個抽象的朋友 朋友在這裡充當了實現者角色 public abstract class friend 下來朋友裡有富有的有貧窮...

設計模式之橋梁模式

場景描述 1 在系統設計時,發現類的繼承有n層時,但不能確定是否會更改繼承來的共性,可以考慮使用橋梁模式。2 類圖描述 橋梁模式是抽象和實現的解耦,使得兩者可以獨立地變化。3 程式實現舉例 c using system using system.collections.generic using s...