定义:就是定义一系列算法,把他们独立封装起来,并且这些算法之间可以相互替换。 说白了,策略模式能够大大的降低耦合度,当修改代码的时候不会牵一发而动全身。
现在模拟一个充话费的需求,假设现在又两种情况:
1.话费充50以下按实际金额收款2.话费充值超过50,则按9.8折收款(这里的9.8折也不一定,所以这个参数也是不定的)知道基本功能需求了,那么我们就要开始分析了,我们把这两种情况分为原价收款和打折收款,两种情况共性是都是收款,那好明确了这个需求我们就开始动手去撸代码;
首先定义好一个公共的策略接口,根据策略这个单词我们就叫他Strategy/** * Created by melo on 2017/2/9. *策略抽象接口,定义所有收款算法 */public interface Strategy { double acceptMoney(double money); //当然如果分析需要别的功能可以继续写方法}做好第一步后,根据分析我们知道有两种收款的计算方法,那么我们就具体的把这两个收款的种类分别对应创建出来实现公共的策略接口Strategy /** * Created by melo on 2017/2/9. * 原价收款 */public class OriginalPRice implements Strategy { @Override public double acceptMoney(double money) { return money; }}策略模式的基本内容就这么多了,对于上述功能如果能结合工厂模式,那么可能判断的逻辑就可以完全可与客户端脱离,是极好的。可以自行去尝试。
新闻热点
疑难解答