本篇內(nèi)容主要講解“java中的策略模式是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“java中的策略模式是什么”吧!
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比桂林網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式桂林網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋桂林地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。
假設(shè)現(xiàn)在要實(shí)現(xiàn)一個(gè)簡化的報(bào)價(jià)管理,實(shí)現(xiàn)如下的功能:
1. 對于普通客戶或者新客戶報(bào)全價(jià)
2. 對于老客戶報(bào)的價(jià)格,統(tǒng)一折扣5%
3. 對于大客戶報(bào)的價(jià)格,統(tǒng)一折扣10%
對不同的人員報(bào)不同的價(jià)格
到底該如何實(shí)現(xiàn),才能夠讓價(jià)格類中的計(jì)算報(bào)價(jià)的算法,能很容易地實(shí)現(xiàn)可維護(hù),可擴(kuò)展,又能動態(tài)地切換變化呢?
策略模式的定義:
定義一系列的算法,把它們一個(gè)個(gè)封裝起來,并且使它們可相互替換,使得算法可獨(dú)立于使用它的客戶而變化
Strategy:策略接口,用來約束一系列具體的策略算法,Context使用這個(gè)接口來調(diào)用具體的策略實(shí)現(xiàn)定義的算法
ConcreteStrategy:具體的策略實(shí)現(xiàn),也就是具體的算法實(shí)現(xiàn)
Context:上下文,負(fù)責(zé)和具體的策略類交互,通常會持有一個(gè)真正的策略實(shí)現(xiàn)
代碼:
3. 研磨設(shè)計(jì)模式
1)策略模式的功能:把具體的算法實(shí)現(xiàn)從具體業(yè)務(wù)處理中獨(dú)立出來,把它們實(shí)現(xiàn)成為單獨(dú)的算法類,從而形成一系列的算法,并讓這些算法可以相互替換
2)Context和Strategy的關(guān)系
策略實(shí)現(xiàn)對象也可以從上下文獲取所需要的數(shù)據(jù),可以將上下文當(dāng)作參數(shù)傳遞給策略實(shí)現(xiàn)對象。
3) 容錯(cuò)恢復(fù)機(jī)制
比如說采用策略模式,把日志記錄到數(shù)據(jù)庫和把日志記錄到文件當(dāng)做兩種記錄日志的策略,然后再運(yùn)行期間根據(jù)需要進(jìn)行動態(tài)的切換
4)策略模式結(jié)合模板方法模式
發(fā)現(xiàn)一系列的算法的實(shí)現(xiàn)上存在公共功能,只是在某些局部步驟上有所不同。
5)策略模式的本質(zhì):分離算法,選擇實(shí)現(xiàn)
到此,相信大家對“java中的策略模式是什么”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!