Java设计模式之策略模式

策略模式定义一组算法,并将每个算法都用类封装起来,实现同一接口,使得算法之间能够相互转换。策略模式使用的是面向对象的继承和多态机制。

策略模式的三种角色

1.Context封装角色
也叫做上下文角色,起承上启下的封装作用,屏蔽高层模块对策略、算法的直接访问,封装可能存在的策略上的变化
2.Strategy抽象策略角色
策略、算法族的抽象,通常为接口定义每个策略或者算法必须实现的方法
3.ConcreteStrategy具体策略角色
实现抽象决策中的方法,包含具体的算法

UML图
策略模式的UML图

代码样例:得到雇员薪水大于8000块钱的策略

public interface EmpStrategy {
    boolean condition(Employee employee);
}

public class HighSalaryEmpStrategy implements EmpStrategy {

    @Override
    public boolean condition(Employee employee) {
        if(employee.getSalary() >= 8000) return true;
        return false;
    }

}
    public static List<Employee> filterEmpList(List<Employee> emps,EmpStrategy strategy){
        List<Employee> employees = new ArrayList<>();
        for(Employee employee : emps) {
            if(strategy.condition(employee)) {
                employees.add(employee);
            }
        }
        return employees;
    }

同样地,能够通过实现EmpStrategy接口,定制符合自己需求的策略。
由此可见,策略模式的可扩展性好,策略(算法)之间能够自由切换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值