策略模式 使用策略模式可以代替多重if-else和switch語句,讓代碼維護變得更加簡單。 ...
前言 當代碼中出現多重if else語句或者switch語句時。弊端之一:如果這樣的代碼出現在多處,那么一旦出現需求變更,就需要把所有地方的if else或者switch代碼進行更改,要是遺漏了某一處,那么程序就會出錯。弊端之二:代碼邏輯難以理解。 衛語句 衛語句的使用,並不能改變前言說的弊端:一旦需求更改,需要修改所有使用更改需求的if else代碼塊。不過使用衛語句可以讓自己或者代碼維護人員很 ...
2018-06-02 17:07 0 2171 推薦指數:
策略模式 使用策略模式可以代替多重if-else和switch語句,讓代碼維護變得更加簡單。 ...
先上圖: 本質上講,策略模式和狀態模式做得是同一件事:去耦合。怎么去耦合?就是把干什么(語境類)和怎么干(策略接口)分開,互不依賴。打個比方,下面是我一天的行程: 但問題來了,啪啪啪是個技術活,有著名的48式,今天到底要用哪一式呢?於是我的代碼變成了這樣: 但代碼如果是這樣的,寶寶 ...
版權聲明:本文出自汪磊的博客,轉載請務必注明出處。 一、策略模式定義 定義:策略模式定義了一系列的算法,並將每一個算法封裝起來,而且使他們之間可以相互替換,策略模式可以在不影響客戶端的情況下發生變化。 好了,定義看看就完了,我知道你很煩看定義。 二、策略模式涉及到的三個角色 環境 ...
1. 現實需求 客戶有了新的需求,這時我們直接新增策略即可,改很少的代碼。基本符合我們面向對象原則中的開閉原則(對擴展開放,對修改關系),實現了高內聚低耦合。 2. 策略模式定義 策略模式,又叫算法簇模式,就是定義了不同的算法族,並且之間可以互相替換,此模式讓算法的變化獨立於使用算法 ...
最近完成了我們公司的公眾號開發,在微信消息路由選擇的時候一開始都是用if-else 來判斷,后面if-else月寫越多顯得十分的亂。在網上簡單查了一下解決方法,果然有不少干貨,感覺最經典最簡潔的還是使用策略模式來重構過多的if-else 選擇。 首先我們新建一個interface ...
學完策略模式和狀態模式后,對比發現兩者的關系類圖幾乎一樣,遂產生了疑問,這兩者模式幾乎一樣的設計,那他兩有什么區別嗎 不過既然是兩者設計模式,那他們肯定不一樣了,哪怕是失散多年的孿生兄弟,那也只是同表不同里 下面結合書上和網上的博客記錄下我的理解 策略模式類圖: 狀態模式類圖 ...
在閻宏博士的《JAVA與模式》一書中開頭是這樣描述策略(Strategy)模式的: 策略模式屬於對象的行為模式。其用意是針對一組算法,將每一個算法封裝到具有共同接口的獨立的類中,從而使得它們可以相互替換。策略模式使得算法可以在不影響到客戶端的情況下發生變化。 策略模式的結構 策略 ...
之前的一段時間一直在學習設計模式相關知識,學習一段時間后發現,設計模式不能算是知識點,其僅僅是一種思想,我們應該在日常的開發設計中潛移默化的應用這種思想,而不是為了模式而模式。言歸正傳,今天我想來叨叨策略模式和狀態模式。 先看看他們的UML圖 兩個模式的UML圖 ...