策略模式类图与代码

某大型购物中心欲开发一套收银软件,要求其能够支持购物中心在不同时期推出的各种促销活动,如打折、返利(例如,满300返100),等等。现采用策略(Strategy)模式实现该要求,得到如图7.13 所示的类图。

【Java 代码】

java 复制代码
import java.util.*;
enum TYPE { NORMAL,CASH_DISCOUNT,CASH_RETURN};
interface Cashsuper {
    public double acceptCash(double money);
}
class CashNormal implements CashSuper{// 正常收费子类
    public double accptCash(double money){
        return money;
    }
}
class CashDiscount implements Cashsuper {
    private double moneyDiscount;    //折扣率
    public CashDiscount(double moneyDiscount){
        this moneyDiscount = moneyDiscount;
    }
    public double acceptCash(double money){
        return money* moneyDiscount;
    }
}
class CashReturn implements Cashsuper {  //满额返利
    private double moneyCondition;
    private double moneyReturn;
    public CashReturn(double moneyCondition, double moneyReturn){
        this.moneycondition =moneyCondition;//满额数额
        this.moneyReturn =moneyReturn;//返利数额
    }
    public double acceptCash(double money){
        double result = money;
        if (money >= moneyCondition )
            result=money-Math.floor(money/moneyCondition )* moneyReturn;
        return result;
    }
}
class CashContext_{
    private Cashsuper cs;
    private TYPE t;
    public CashContext(TYPE t){
        switch(t){
            case NORMAL;// 正常收费
                cs= new CashNormal();
                break;
            case CASH RETURN;//满300返100
                cs = new CashReturn(300,100);
                break;
            case CASH_ DISCOUNT;//打8折
                cs =new CashDiscount(0.8);
                break;
        }
    }
    public double GetResult(double money){
        return cs.acceptCash(money);
    }
    //此处略去main()函数
}
相关推荐
二哈赛车手4 分钟前
新人笔记---项目中简易版的RAG检索后评测指标(@Recall ,Mrr..)实现
java·开发语言·笔记·spring·ai
做时间的朋友。5 分钟前
精准核酸检测
java·数据结构·算法
许彰午17 分钟前
CacheSQL(五):桥接篇
java·数据库·缓存·系统架构
冯诺依曼的锦鲤18 分钟前
从零实现高并发内存池:TCMalloc 核心架构拆解
c++·学习·算法·架构
Thomas_Lee_OR21 分钟前
多Agent路径规划 LaCAM for multi-agent path finding (MAPF)
算法·路径规划·仓储机器人·mapf
ATCH IERV28 分钟前
Java实战:Spring Boot application.yml配置文件详解
java·网络·spring boot
一切皆是因缘际会29 分钟前
可落地数字生命工程:从记忆厮杀到自我意识觉醒全链路,AGI内生智能硅基生命心智建模
人工智能·深度学习·算法·机器学习·ai·系统架构·agi
nlpming40 分钟前
opencode Agent 详解
算法
江南十四行44 分钟前
排序算法进阶:直接插入排序(简单排序)与希尔排序
数据结构·算法·排序算法
nlpming44 分钟前
opencode System Prompt 构建机制 & AGENTS.md注入机制
算法