發(fā)文初衷:為什么突發(fā)奇想要對Java的設(shè)計模式做研究,首先由于本人以前對設(shè)計模式概念比較模糊,自從本人改過自新之后,決定對以前所以模棱兩可的東西,都會進(jìn)行一一的系統(tǒng)詳細(xì)的學(xué)習(xí)。正巧公司最近項目當(dāng)中遇到了設(shè)計模式中的策略模式,所以本人寫下自己的心得的思考。
個人觀點:I Think ?所有的設(shè)計模式都在實際的項目開發(fā)中由大牛么,通過不斷的向上抽取,最終得到一種比較好的方式來使我們的開發(fā)更加的方便。
模式的應(yīng)用場景:百貨商場的收銀系統(tǒng),由于商場都會有自己的會員制度,所以每一件商品針對不同的用戶群體都會有相應(yīng)的價格。本文舉例的角色用戶:普通用戶,會員,超級會員,在針對每一個商品的計算方式都大不相同,也許有人會說,那這個還不簡單,編寫一個函數(shù),通過參數(shù)傳遞的不同做不同的計算。你可能會這樣去做,但是在實際的業(yè)務(wù)邏輯當(dāng)中,也許上面的三個角色并不是你想想的只是簡單的計算而已。也許會有給會員積分,也許會有將不同的用戶群體以不同的方式進(jìn)行存儲以便以后,針對不同用戶進(jìn)行精準(zhǔn)推送。當(dāng)然這些問題都可以通過最基本的 ?i f ----else ? 的方式進(jìn)行解決,但是想過沒有如果另外一個人來對你的業(yè)務(wù)進(jìn)行維護。別人可能看的都會比較頭大。那么策略模式是一種很好解決i f ---else這種傳統(tǒng)的方式。好不多說,看代碼
這是定義的一個接口,里面只是一個簡單的計算方法,但是在實際的業(yè)務(wù)邏輯當(dāng)中會有其他的操作,具體應(yīng)按照業(yè)務(wù)邏輯而定

下面分別被:普通用戶、會員、超級會員繼承



這樣當(dāng)所有的業(yè)務(wù)邏輯變的復(fù)雜的時候,我們只需要在相應(yīng)的角色用戶中進(jìn)行相應(yīng)的修改,或者添加相應(yīng)的業(yè)務(wù)邏輯,那么當(dāng)下一個人接收你的項目的時候,別人就能會快的熟悉你的代碼邏輯以及項目邏輯。讓別人快速融入到項目當(dāng)中。
下面是用戶調(diào)用:相關(guān)類
注:本人是從事android開發(fā),可能有些控件問題只有相應(yīng)的android coder才能看懂,暫時沒有用純java的方式,在此非常抱歉,


總結(jié):策略模式其實就是if --else的高度抽象升級(個人理解),作為一名有理想的coder,總是會希望自己的東西能夠的到別人的認(rèn)可和被別人快速理解,策略模式是其中一種能夠快速讓人理解的模式之一。在實際的項目開發(fā)中希望大家能根據(jù)項目需求,合理的選擇好的方式。不管對自己還是他人都是一個幫助和成長,有不同理解的coder希望能聽到你們的留言,本人會以最快的方式和大家討論。最后,喜歡的人,留下你們的點贊,不喜勿噴,謝謝