Java设计模式之策略模式

来源:互联网 发布:淘宝最诚信的邮票商家 编辑:程序博客网 时间:2024/05/18 13:46

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

策略模式的三种角色

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接口,定制符合自己需求的策略。
由此可见,策略模式的可扩展性好,策略(算法)之间能够自由切换。

原创粉丝点击