策略模式(Strategy Pattern)
一个类的行为或其算法可以在运行时更改,这种设计模式最核心点就是封装算法的变化,让他们能相互替换。
废话不多说,先上需求:商场结账要一个统计商品的购买总价,并在原来价格的基础上出现打折、返利等优惠活动。
策略模式类图
几个策略方法继承于同一个抽象类,他们都通过context这个上下文接口进行实例化 。
CashSuper策略抽象类
abstract class CashSuper {public constructor() {}public abstract acceptCash(money: number); //优惠策略的抽象方法 }
CashNormal正常策略类
class CashNormal extends CashSuper {public constructor() {super();}public acceptCash(money: number): number {return money;} }
CashRebate打折策略类
class CashRebate extends CashSuper {private moneyRebate: number = 1;