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

首頁 > 學院 > 開發設計 > 正文

策略模式(Strategy)簡介

2019-11-14 23:24:00
字體:
來源:轉載
供稿:網友
策略模式(Strategy)簡介一、策略模式(Strategy)簡介

策略模式是行為模式.

行為模式:規定了各個對象應該具備的職責以及對象間的通信模式,它很好的規范了對象間調用和數據傳遞方式

策略模式適合于算法經常變化的情況

算法的變化不會影響到使用算法的客戶,算法可以獨立于使用它的客戶所變化

二、簡單例子

普通客戶,會員,Vip會員購買商品價格不一樣

抽象類

package strategy;/* * 計算商品價格的抽象類 */public abstract class Account {abstract public double getPRice(int amount,double d);    }

普通

package strategy;/** * 普通客戶商品價格計算 */public class CommonAccount extends Account {    @Override    public double getPrice(int amount, double price) {        return amount*price;    }}

會員

package strategy;/** * 普通會員商品價格計算打9折 */public class InsiderAccount extends Account {    @Override    public double getPrice(int amount, double price) {        return amount*price*9/10;    }}

VIP

package strategy;/** * VIP會員商品價格計算打8折 */public class VipAccount extends Account {    @Override    public double getPrice(int amount, double price) {            return amount*price*8/10;    }}

上下文類

package strategy;/** * 此類用于維護策略類的引用 */public class Context {    //引用    private Account account;    //初始化    public Context(Account account){        this.account=account;    }    //調用計算方法    public double doAccount(int amount, double d){        return account.getPrice(amount, d);    }    }

測試類

package strategy;/** * 此策略模式測試類 */public class Test {    public static void main(String[] args) {        // 聲明商品        String name = "DVD";        int amount = 2;        double price = 50;        double sum = 0;        // 聲明對象        // 普通客戶        Context context = new Context(new CommonAccount());        sum = context.doAccount(amount, price);        System.out.println("普通客戶:沒有折扣,購買的商品名稱:    " + name + "       數量:   "                + amount + "      單價:" + price + "      應付金額:" + sum);        // 普通會員        context = new Context(new InsiderAccount());        sum = context.doAccount(amount, price);        System.out.println("普通會員:9折優惠,購買的商品名稱:    " + name + "       數量:   "                + amount + "      單價:" + price + "      應付金額:" + sum);        // VIP        context = new Context(new VipAccount());        sum = context.doAccount(amount, price);        System.out.println("VIP客戶:8折優惠,購買的商品名稱:    " + name + "       數量:   "                + amount + "      單價:" + price + "      應付金額:" + sum);    }}

結果:

普通客戶:沒有折扣,購買的商品名稱:    DVD       數量:   2      單價:50.0      應付金額:100.0普通會員:9折優惠,購買的商品名稱:    DVD       數量:   2      單價:50.0      應付金額:90.0VIP客戶:8折優惠,購買的商品名稱:    DVD       數量:   2      單價:50.0      應付金額:80.0


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巨野县| 渝中区| 阜阳市| 务川| 昂仁县| 江油市| 灌云县| 图片| 吉水县| 忻城县| 丹凤县| 韶山市| 怀柔区| 嘉荫县| 东乌珠穆沁旗| 金昌市| 揭西县| 利津县| 忻州市| 嘉峪关市| 平乐县| 峡江县| 柳江县| 漾濞| 三河市| 河北区| 肇东市| 池州市| 湘乡市| 驻马店市| 太康县| 滨州市| 连城县| 阿拉善左旗| 盐源县| 长沙县| 天津市| 霍林郭勒市| 称多县| 申扎县| 阿克陶县|