设计模式之策略模式

一:介绍

策略模式定义了算法族,继承相同的接口,分别封装起来,让他们能够相互替换。以此来达到运行时更改算法。此模式让算法的变化独立于使用算法的客户。

二:设计原则

1.找出应用中可能变化之处,把他们独立出来,不要和那些不需要变化的代码混在一块。
2.针对接口编程,而不是针对实现编程。
3.多用组合,少用继承。

三:实战

场景:计算器的加减乘除

1.定义抽象方法用来表示计算

public interface Strategy {

    public int doOperation(int num1, int num2);
}

2.定义策略角色
加法:

public class AdditionStrategy implements Strategy {

    @Override
    public int doOperation(int num1, int num2) {
        return num1 + num2;
    }
}

减法:

public class SubtrationStrategy implements Strategy {
    @Override
    public int doOperation(int num1, int num2) {
        return num1 - num2;
    }
}

省略乘法和除法。。。。。。。。。。。。。。。。。。

3.定义计算器

public class Calculator {
    private Strategy strategy;

    public Calculator(Strategy strategy) {
        this.strategy = strategy;
    }

    public int operation(int num1, int num2) {
        return strategy.doOperation(num1, num2);
    }
}

4.测试:用户可根据实际需要选择计算器来实现自己算法

public class Application {

    public static void main(String[] args) throws InstantiationException, IllegalAccessException {
        int num1 = 100;
        int num2 = 10;
        Calculator calculator = new Calculator(new AdditionStrategy());
        System.out.println("people正在做加法" + calculator.operation(num1, num2));

        Calculator calculator2 = new Calculator(new SubtrationStrategy());
        System.out.println("people2正在做加法" + calculator2.operation(num1, num2));
    }
}

四:总结
使用策略模式,能够在运行时选择算法。当然,缺点也很明显,如果实现类过多,会导致过于臃肿。。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值