平時工作當中,總是聽到要學習設計模式,設計模式的優點很多,我們要掌握好設計模式,包括面試當中也經常會被問到設計模式這些東西。但是平時只顧著學了,很少在工作中實際用到,不是說工作中用不到設計模式,而是平時積累得太少了,碰到了相應的場景,我們自己壓根就沒有往這方面思考。這不,筆者在寫了成百上千次if…else以後,終於想起了在專案中使用設計模式了。
public
class
adserviceimpl
implements
adservice
else
if(type ==2)
else
if(type ==3)
// 如果有其他的廣告場景,就得在下面一行加乙個else if的判斷,然後再利用autowired注入乙個對應的service來處理。
return null;
}}
public
class
public
class
adserviceimpl
implements
adservice
baserewardservice rewardstrategy = rewardservicemap.
get(rewardtype.
strategyname()
);return rewardstrategy.
reward
(rewarddto);}
}
rewardtype是乙個列舉型別,在列舉型別中定義了乙個strategyname屬性,該屬性表示的是加獎勵的service在spring容器中的beanname,該列舉還提供了乙個find()方法,該方法是根據傳入的code值,找到對應的列舉型別,定義如下:
public
enum rewardtype
}return null;
}rewardtype
(int code, string strategyname, string desc)
private
int code;
private string strategyname;
private string desc;
public
intcode()
public string strategyname()
public string desc()
}
記一次策略模式的使用
每次說起設計模式腦子裡總是想起大學裡學的23中設計模式。23中設計模式,能記住的屈指可數,在工作中用到的更是少之又少。當然,設計模式聽著總是感覺很高大上,自己那點業務需求有點簡單的if else,三下五除二就打完收工了,如果絞盡腦汁弄了設計模式,量倍增,看不到到底好在 反而增加了工作量。這次就用乙個...
設計模式應用三 策略模式
商場打折 策略可以簡單分為 原價購買 滿減 返利三種策略 系統的操作都要有日誌記錄,通常會把日誌記錄在資料庫裡面,方便後續的管理,但是在記錄日誌到資料庫的時候,可能會發生錯誤,比如暫時連不上資料庫了,那就先記錄在檔案裡面。日誌寫到資料庫與檔案中是兩種演算法,但呼叫方不關心,只負責寫就是 根據狀態進行...
設計模式(一) 策略模式
設計模式 一 策略模式 本文描述的是策略模式 我們假設有如下場景 我們使用聊天工具聊天時,可以傳送點對點訊息 私聊 和點對多訊息 群聊 而傳送不同的訊息執行的操作是不一樣的,也就是說我們在不同的場景下 私聊或者群聊 傳送訊息時會呼叫不同的傳送方法,但是我們只有乙個訊息傳送器 可以理解為傳送訊息時的傳...