設計模式(一)介紹

2022-01-20 08:38:48 字數 1931 閱讀 4020

每乙個描述了乙個在我們周圍不斷重**生的問題以及問題解決方案的核心。這樣,你就能一次又一次地使用該方案而不必做重複勞動。

模式名稱。模式的乙個助詞名。

問題。模式應用的場景。

解決方案。描述了設計的組成部分,它們之間的相互關係及各自的職責和協作方式。

效果。描述了模式應用的效果及使用模式應權衡的問題。

按目的原則,可分為建立型、結構型、行為型。

建立型與物件的建立有關;結構型處理類或物件的組合;行為型對類或物件怎樣互動和怎樣分配職責進行描述。

按範圍原則,可分為類模式和物件模式。

客戶請求是使用物件執行操作的唯一方法,操作又是物件改變內部資料的唯一方法。

型構:物件宣告的每乙個操作名、引數和返回值,一般我們講的方法簽名。

介面:物件所定義的所有操作型構的集合。

型別:用來標識特定介面的乙個名字。

在物件導向系統中,介面是基本的組成部分,物件只有通過它們的介面才能與外界互動。物件介面與其功能實現是分離的,不同物件可以對請求做不同的實現。

動態繫結:傳送給物件的請求和它的相應操作在執行時刻的連線。傳送的請求直到執行才受具體的實現的約束。

多型:動態繫結允許你在執行時刻替換相同介面的物件。這種性質就是多型,多型允許客戶物件僅要求其他物件支援特定介面。

只根據抽象類中定義的介面來操縱物件有兩個好處:

客戶無須知道他們使用物件的特定型別,只須物件有客戶所期望的介面

客戶無須知道他們使用的物件是用什麼類來實現的,他們只須知道定義介面的抽象類。

委託:是一種組合方法,它使組合具有與繼承同樣的復用能力。在委託方式下,有兩個物件參與處理乙個請求,接受請求的物件將操作委託給它的**者。

通過顯示地指定乙個類來建立物件。在建立物件時指定類名將使你受特定實現的約束而不是特定介面的約束,這會使未來的變化更複雜,要避免這種情況,應該間接建立物件。

設計模式:abstract factory, factory method, prototype

對特殊操作的依賴。當你為請求乙個特殊的操作時,完成該請求的方式就固定下來了,為避免把請求**寫死,你將可以在編譯時或執行時很方便地改變響應請求的方法。

設計模式:chain of resposibility, command

對硬體和軟體平台的依賴。

設計模式:abstract factory, bridge

對物件表示或實現的依賴。知道物件怎樣表示、儲存、定位或實現的客戶在物件發生變化時可能也需要變化。對客戶隱藏這些資訊能阻止連鎖變化。

設計模式:abstract factory,bridge, memento, proxy

演算法依賴。演算法在開發和復用時常常被擴充套件、優化和替代。依賴於某個特定演算法的物件在演算法發生變化時不得不變化。因此有可能發生變化的演算法應該被孤立起來。

設計模式:builder, iterator, strategy, template method, visitor

緊耦合。這樣的類很難獨立地被復用,因為它們是互相依賴的。

設計模式:abstract factory, command, facade, mediator, observer, chain of resposibility.

通過生成子類來擴充功能。

設計模式:bridge, chain of resposibility, composite, decorator, observer, strategy

不能方便地對類時行修改。

設計模式:adapter, decorator, visitor

考慮設計模式是怎樣解決設計問題的

瀏覽模式的意圖部分

研究模式怎樣互相關聯

研究目的相似的模式

檢查重新設計的原因

考慮你的設計中哪些是可變的

Spring Batch學習(一)介紹

我們不會總是想要立即得到需要的資訊,批處理允許我們在請求處理之前就乙個既定的流程開始蒐集資訊 比如說乙個銀行對賬單,我們可以按月生成,並在使用者查詢之前開啟乙個批處理流程進行處理 更好的利用資源 讓應該利用的處理能力閒置起來是乙個大的浪費,我們可以定製處理讓乙個機器乙個接乙個的執行job可以更好的利...

Thrift服務(一) 介紹

apache thrift是一種rpc框架。rpc remote procedure call 即遠端過程呼叫。其呼叫協議通常包含傳輸協議和序列化協議。傳輸協議包含 如著名的grpc grpc grpc.io 使用的 http2 協議,也有如dubbo一類的自定義報文的tcp協議。序列化協議包含 如...

Redis學習筆記(一) 介紹

redis 是乙個開源的高效能鍵值對資料庫 他通過提供多種鍵值資料型別來適應不同場景下的儲存需求,並借助許多高層級的介面使其可以勝任如快取 佇列系統等不同的角色。redis是remote dictionary server 遠端字典伺服器 的縮寫,他以字典結構儲存資料,並允許其他應用通過tcp協議讀...