策略模式——工资支付

本文分析了两种策略模式实现工资支付的方式:扩展上下文和在策略算法中添加所需数据。扩展上下文能保持策略风格统一,但也可能导致复杂上下文层次;而在策略算法中添加数据则实现简单,但风格不一致,不利于统一使用。
摘要由CSDN通过智能技术生成

下面代码中添加了两种新的方式:

1、扩展上下文的方式:

优点:

(1)所有策略的实现风格统一,策略需要的数据都统一从上下文来获取,这样在使用方法上也很统一

(2)在上下文添加新的数据,别的相应算法也可以用得上,可以视为公共的数据

缺点:

(1)如果只有一个特定的算法来使用这些数据,那么这些数据有些浪费

(2)每次添加新的算法都去扩展上下文,容易形成复杂的上下文对象层次

2、在策略算法的实现上添加自己需要的数据的方式: 

优点:比较好想,实现简单

缺点:

(1)跟其他策略实现的风格不一致

(2)外部使用这些策略算法的时候也不一样,不太好以一个统一的方式来动态切换策略算法

//工资支付接口
public interface PaymentStrategy {
	public void pay(PaymentContext ctx);
}

//人民币现金支付
public class RMBCash implements PaymentStrategy {
	public void pay(PaymentContext ctx)
	{
		System.out.println("现在给"+ctx.getUserName()+"人民币现金支付"+ctx.getMoney()+"元");
	}
}

//美元现金支付
public class DollarCash 
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值