设计模式
设计模式之策略模式
策略模式定义了算法簇,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。 来解析这个定义,“算法簇”&“相互替换”代表了是一组相同目的算法,肯定是利用多态能力实现。脑海中,下述的类图就出来了。 “变化独立于使用算法的客户”,这句话的意思是,使用这些算法的客户端代码不需要因为算法的变化而修改自身,什么意思,如何能做到改变算法而不修改自身,那就是客户端代码只依赖于算法的抽象(接口),而不是具体的实现。 通过类图,可以清晰的看到两者的区别。 学习设计模式,一个关键的自我校验,是能够自己给自己出题,构建场景,并通过目标设计模式来解决。 💡以支付场景来举例,具体的支付方式有支付宝和微信,需要支持用户在实际付款时动态切换。 1. 定义算法接口:定义一个 PaymentStrategy 接口,表示支付方式的抽象。 public interface PaymentStrategy { void pay(int amount); } 2. 实现具体算法:AlipayStrategy 和 WechatPayStrategy 分别实现 Payment