策略模式 這次一定要弄懂

2021-09-26 15:40:24 字數 1016 閱讀 9366

先假設乙個場景:某個市場人員接到單後的**策略。**策略很複雜,可以簡單作如下分類:

普通客戶小批量**

普通客戶大批量**

老客戶小批量**

老客戶大批量**

具體選用哪個**策略,這需要根據實際情況來確定。這時候我們採用策略模式即可。採用不同的策略應付不同的模型。

如果我們不採用策略模式,我們會怎麼處理吶?寫if else迴圈

public double getprice(string type, double price)else if (type.equals("普通客戶大批量")) else if (type.equals("老客戶小批量")) else if (type.equals("老客戶大批量")) 

return price;

}

但是如果型別特別多,演算法比較複雜的時候,整個條件控制**會變得很長,難於維護。

策略模式對應於解決某乙個問題的乙個演算法族,允許使用者從該演算法族總人員乙個演算法解決某乙個問題,同時可以方便的更換演算法或者增加新的演算法,並有客戶端決定呼叫哪個演算法。

步驟:1.先增加乙個策略介面

public inte***ce strategy
2.然後增加介面的幾個實現類

public class newcustomerfewstrategy implements strategy 

}

然後定義上下文類,客戶端呼叫的是上下文類進行操作

public class context 

// 通過set方法

public void setstrategy(strategy strategy)

public void printprice(double s)

}

最後呼叫

public class client 

}

一定要畢業!

我不喜歡微電子這個專業,不喜歡硬體。但其實我也不討厭。但是,我喜歡計算機軟體,網際網路,我以後的工作肯定是程式設計師的啊!我不想複習,不想學量子力學,不想學固體物理,不想學數位電路,真的不想!不想考試!但是沒辦法啊!該死的命運啊!我程式設計還沒學好,卻要花時間去學這些我以後根本就不用的東西啊!不願意...

Vim中文亂碼問題之這次一定要記下來

vim無疑是世間最強的編輯器 之一 了,但是強大的代價有時候就是必須要花上更多的功夫來應付。中文的編碼問題無疑是中文使用者值得一提的乙個典型問題了,作為老使用者的我為此曾經狠狠的中槍過三次,到了最近這一次,我決定要好好的寫下來,為了記憶日漸衰退的自己留下一點方便查詢的記錄了。大概七八年前吧,那時候還...

跳槽一定要謹慎

又到年終了,想必很多人又在預謀來年換個環境,以求改變現狀。不知大家都是從那些方面來選擇新環境的?1 不要指望會一下子能夠跳到多麼好的公司,絕大多數公司都乙個樣子。比如用友 金蝶 亞信 神馬這些公司,其實基本上乙個樣子。2 不要一味的指望進大公司,大公司基本上都形成了自己的規模和體制,雖然進入待遇和福...