設計思想學習 策略模式

2021-08-13 14:39:46 字數 1243 閱讀 9183

首先來看一下定義

策略模式(strategy):定義一組演算法,將每個演算法都封裝起來,並且使他們之間可以互換

策略模式主要有三點組成

舉個栗子:

我中午想吃好吃的,但可以吃的東西有很多種:烤鴨、龍蝦、帝王蟹,但是不管吃啥,都是吃,所有就有了抽象策略角色

inte***ce

dine

//下面這些是具體吃啥,也就是具體策略角色

class

roastduck

implements

dine

}class

lobster

implements

dine

}class

kingcrab

implements

dine

}//最後是環境角色

class

eatcontext

//實現吃飯

public

void start()

}//客戶端**

public

class

client

}

策略模式的優點還是很明顯的

同樣的缺點也有

還記得昨天工廠模式的問題嗎?今天剛好結合策略模式互補。

這裡我直接繼續工廠模式部落格的**(耦合度高了,不過這個正是我想的,因為我懶啊!嘿嘿!),我把工廠類和產品直接看成了策略就不再進行更改了(網路上的都是把簡單工廠和策略模式結合,我這裡是借用這個思想弄出來)

//首先增加策略類

class strategy

operation=factory.creatoperation();

}public

double

sendresult(double numa,double numb)

}//客戶端

public

class calc

}

好了目前的就先寫到這裡了,套用大話設計思想中的一句原話

任何的需求變更都是需要成本的,但成本高低還是有差異的

高手和菜鳥的區別就是,高手可以花同樣的代價獲得更高的收益或者做同樣的事花最小的代價

努力向高手看齊。

設計思想學習 外觀模式

記得有一次,我們一起去了乙個別墅轟趴,那時候大家都去玩自己想玩的事情,大廳開燈是必須的,看電影的要去小房間開投影儀幕布,玩遊戲的要開電腦或者xbox等等。最後玩的筋疲力盡了還要乙個個去把他們關掉,那時候就在想如果有乙個按鈕關掉或者開啟所有多好。直到今天看了外觀模式才知道,那個想法就是乙個外觀模式的思...

設計思想學習 組合模式

本來這篇是要元旦發出來的,可惜玩的太嗨了,沒有時間發,只能抽空看看知識點。祝大家新年新氣象,身心健康,心想事成。相信只要玩過電腦的人都對下面的這張圖不會陌生 這結構想必大家也都熟悉,就是樹狀結構 其實這也是組合模式的定義 組合模式 composite 將物件組合成樹形結構以表示 部分 整體 的層次結...

設計思想學習 建造者模式

建造者模式 builder 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。建造者模式組成uml圖 個人理解 建造者定義很通俗易懂,就是將裝配的過程和成果展示分離,過程不變,但是我可以改變材料,出來不相同的作品。這個過程就由抽象建造者定義 實際建造者就是通過定義好的過程新增...