国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

策略模式

2019-11-09 20:50:28
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  策略模式

  本文結(jié)合大話設(shè)計(jì)模式中策略模式總結(jié),以會(huì)員結(jié)賬使用不同的結(jié)算規(guī)則來(lái)描述策略模式。

  策略接口

package com.neutron.strategy;/** * 折扣策略,策略模式中基礎(chǔ)算法 * S:策略接口,定義所有支持的算法公共接口 *  * @author neutron * */public interface Discount {	/**	 * 打折策略	 * 	 * @param original 原始價(jià)格	 * @return 折扣后價(jià)格	 */	double discount(double original);}

  算法實(shí)現(xiàn)類(lèi)

package com.neutron.strategy;/** * 策略模式中具體算法,全價(jià)策略 * S:具體策略類(lèi),封裝具體的算法或行為 *  * @author neutron * */public class Percent100 implements Discount {	PRivate static final double percent100 = 1;		@Override	public double discount(double original) {		return percent100 * original;	}}  
package com.neutron.strategy;/** * 策略模式中具體算法,9折策略 * S:具體策略類(lèi),封裝具體的算法或行為 *  * @author neutron * */public class Percent90 implements Discount {	private static final double percent90 = 0.9;		@Override	public double discount(double original) {		return percent90 * original;	}}
package com.neutron.strategy;/** * 策略模式中具體算法,8折策略 * S:具體策略類(lèi),封裝具體的算法或行為 *  * @author neutron * */public class Percent80 implements Discount {	private static final double percent80 = 0.8;		@Override	public double discount(double original) {		return percent80 * original;	}}
package com.neutron.strategy;/** * 策略模式中具體算法,7折策略 * S:具體策略類(lèi),封裝具體的算法或行為 *  * @author neutron * */public class Percent70 implements Discount {	private static final double percent70 = 0.7;		@Override	public double discount(double original) {		return percent70 * original;	}}
package com.neutron.strategy;/** * 策略模式中具體算法,全價(jià)策略 * S:具體策略類(lèi),封裝具體的算法或行為 *  * @author neutron * */public class Percent100 implements Discount {	private static final double percent100 = 1;		@Override	public double discount(double original) {		return percent100 * original;	}} 

  會(huì)員等級(jí)

package com.neutron.entity;/** * 會(huì)員等級(jí) *  * @author neutron * */public enum Level {	gold, silver, bronze, plain;}  

  策略上下文

package com.neutron.strategy;import com.neutron.entity.Level;/** * S:Content上下文,維護(hù)策略對(duì)象引用 *  * @author neutron * */public class DiscountContent {	private Discount count;	public DiscountContent(Level level) {		switch(level) {			case gold: this.count = new Percent70(); break;			case silver: this.count = new Percent80(); break;			case bronze: this.count = new Percent90(); break;			case plain: this.count = new Percent100(); break;			default:this.count = new Percent100();		}	}		public double contentDiscount(double original) {		return this.count.discount(original);	}		}

  客戶端

package com.neutron.client;import com.neutron.entity.Level;import com.neutron.strategy.DiscountContent;/** * 策略模式客戶端 *  * @author neutron * */public class Client {	/*	 * 優(yōu)點(diǎn):	 * 1.最大程度上將客戶端和業(yè)務(wù)處理分離出來(lái)	 * 2.客戶端只傳遞會(huì)員等級(jí)和原始金額	 */	public static void main(String[] args) {		double goldPrice = new DiscountContent(Level.gold).contentDiscount(100);		System.err.println("gold member: " + goldPrice);				double silverPrice = new DiscountContent(Level.silver).contentDiscount(100);		System.err.println("silver member: " + silverPrice);				double price = new DiscountContent(Level.plain).contentDiscount(100);		System.err.println("plain member: " + price);	}}

   總結(jié)

/** * 策略模式案例 *  * 策略模式生活中案例:商場(chǎng)打折,出差去某地可以乘車(chē)、輪船、步行、飛機(jī) * 案例解讀:統(tǒng)一行為采用不同的實(shí)現(xiàn)方式,打折是計(jì)算最終價(jià)格的不同方式,去某地出差使用不同的交通工具而已 * 策略模式:定義了算法家族,分別封裝起來(lái),讓它們之間可以相互替換,此模式讓算法的變化獨(dú)立于使用該算法的客戶端 * 解讀定義:定義去某地的各種出發(fā)方式,步行、汽車(chē)、輪船、飛機(jī)等,可以使用任意一種方式并最終到達(dá)某地, * 		    客戶端調(diào)用的最終結(jié)果是到某地,具體如何實(shí)現(xiàn)客戶端不關(guān)心。 * 其他解說(shuō): * 	1.策略模式都是完成相同的工作,只是實(shí)現(xiàn)不同,可以以相同的方式調(diào)用所有算法,減少算法類(lèi)和使用算法的耦合。 * 	2.策略模式封裝算法,只要在業(yè)務(wù)中需要不同時(shí)間或者應(yīng)用不同的業(yè)務(wù)規(guī)則,都可以使用策略模式處理變化的可能性 * 	3.策略模式中,選擇具體實(shí)現(xiàn)的職責(zé)由客戶端承擔(dān),并且轉(zhuǎn)移給策略模式的上下文對(duì)象 * @author neutron */package com.neutron.strategy;   


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 延吉市| 古蔺县| 连江县| 庆安县| 来凤县| 汉源县| 紫云| 湖口县| 健康| 鹿泉市| 沁源县| 德州市| 四会市| 阆中市| 泰和县| 德令哈市| 苏尼特左旗| 石楼县| 图片| 屏东市| 留坝县| 武穴市| 阜宁县| 镇雄县| 平塘县| 鹿邑县| 土默特左旗| 甘肃省| 宽城| 碌曲县| 康保县| 锡林郭勒盟| 铁力市| 丹阳市| 锡林浩特市| 阿鲁科尔沁旗| 定安县| 靖江市| 湖北省| 马龙县| 体育|