java 策略模式+简单工厂模式+反射

文章探讨了在Java项目中如何利用策略模式处理多种计费策略,如原价、打折和满减。通过创建抽象策略类和具体策略实现,实现了策略模式。进一步引入简单工厂模式解决客户端选择策略的缺点,最后利用反射进一步优化,以减少代码修改需求。文章总结了策略模式的优缺点,并展示了其在实际场景中的应用。
摘要由CSDN通过智能技术生成

一、场景:在实际的项目开发中,我们常常会遇到这样的问题,实现一个功能有多重方法或策略。

比如商场中计算价格的方法:

1、商场中没有活动,那么收费就是原价;

2、商场中有活动,打8折;

3、商场中有活动,满300件100;

这三个中计算价格的方法就是三种策略。我们在不适用设计模式的情况下,就只能用if...else...获取switch..case..来判断使用哪一中计算方法,如下代码块:

/**
* 增加打折功能,在客户端增加一个折扣下拉选,打8折、7折、5折
 * @param price 单价
 * @param count 数量
 * @param discount 折扣
 * @return
 */
public Double calculation2(Double price,Double count,String discount){
	Double result=0D;
	if(price==null || count==null){
		return result;
	}
	switch (discount) {
	    case "打8折":
		result=price*count*0.8;
		break;
	    case "打7折":
		result=price*count*0.7;
		break;
	    case "打5折":
		result=price*count*0.5;
		break;
	    default:
		result=price*count;
		break;
	    }
	    return result;
}

这样写可以实现搞活动的功能,但是这样写代码属于硬编码,如果商场中不搞活动了或者新增加了一种活动规则,我们就需要重写代码

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值