策略模式 问题引入 问题描述 大鸟给小菜出了个作业,要求实现一个商场收银软件程序,营业员可以通过输入客户所有购买商品的单价和数量,程序自动计算出总金额。同时,商场有时会有打折活动(如商品打7折),或满减促销活动(如商品满300-100),程序应能考虑这些活动的情形,在尽量减少重复代码的前提下,实现正确的金额计算。 考虑到商场可能经常性地更改打折额度和返利额度,上述问题虽然可以用简单工厂模式实现,但如果每次扩展收费形式都要改动工厂,导致代码重新编译部署,则确实不是最好的处理方式。此时可以考虑使用 。 模式定义 是指定义一个算法家族,使得家族内的不同算法都遵从算法家族的接口及方法规范,从而可以实现算法间互相替换,且不会影响到使用算法的客户。