大话设计模式--策略者模式

本文介绍了一种使用策略模式处理商场打折促销活动的方法。通过将不同的打折算法封装为独立的类,并利用简单工厂模式创建这些策略对象,实现了算法的灵活切换。这种设计模式降低了系统的耦合度,使得客户端只需与统一的接口进行交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 在业务需求中,会有一个相同的结果,但会用到不用的算法。比如商场打折促销,结果都是给商品打折,但是打折的方式不一样。算法不一样。所以就要用策略者模式,用类把这些算法封装起来,建立一个简单工厂,然后在用一个context类来与客户端做交流。如:

package effective.Strategist;

public class CashContext {
	private CashSuper cash;//具有相同行为抽象的类
	
	public  CashContext(CashSuper cashSuper){
		this.cash=cashSuper;
	}
	public double getResult(double money){
		return cash.acceptCash(money);
	}
	public static void main(String[] args) {
		CashContext cc = null;
		String aa = "1";//比如这是与客户端接收的请求参数
		switch(aa){
		case "1": cc = new CashContext(new CashRebute());//相同行为的不同实现
		case "2": cc = new CashContext(new CashReturn());
		case "3": cc = new CashContext(new CashNormal());
		}
	}
}
这样的好处就是在处理中,客户端只要跟
CashContext 做交流就行,免去了与CashSuper的三个子类做交互。从而降低了耦合 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值