Java设计模式之策略模式
来源:互联网 发布:淘宝最诚信的邮票商家 编辑:程序博客网 时间:2024/05/18 13:46
策略模式定义一组算法,并将每个算法都用类封装起来,实现同一接口,使得算法之间能够相互转换。策略模式使用的是面向对象的继承和多态机制。
策略模式的三种角色
1.Context封装角色
也叫做上下文角色,起承上启下的封装作用,屏蔽高层模块对策略、算法的直接访问,封装可能存在的策略上的变化
2.Strategy抽象策略角色
策略、算法族的抽象,通常为接口定义每个策略或者算法必须实现的方法
3.ConcreteStrategy具体策略角色
实现抽象决策中的方法,包含具体的算法
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接口,定制符合自己需求的策略。
由此可见,策略模式的可扩展性好,策略(算法)之间能够自由切换。
阅读全文
0 0
- Java设计模式之策略设计模式
- Java设计模式之策略设计模式
- Java设计模式之策略
- Java设计模式之策略模式
- java设计模式之 策略模式
- JAVA 设计模式之 策略模式
- java设计模式之策略模式 Strategy
- java设计模式之策略模式
- java设计模式之策略模式
- 浅谈Java设计模式之---策略模式
- java设计模式之策略模式
- Java设计模式之策略模式
- java设计模式之策略模式
- Java设计模式之策略模式
- Java设计模式之策略模式
- java设计模式之策略模式
- 设计模式之策略模式(java)
- Java设计模式笔记之策略模式
- Java使用Jpython调用Python
- Codeforces 707D Persistent Bookcase 暴力(bitset)
- HDU 5213 Lucky(莫队+容斥)
- 关于mac上没有include文件以及没有mysql.h的解决方案
- RecyclerView 中 textView 省略号相关
- Java设计模式之策略模式
- python opencv入门 直方图反向投影(24)
- CodeForces 785E Anton and Permutation (分块)
- Unity2017+Easytouch5双摇杆控制角色&&视角&&animation动画[新手向]
- MyBatis Generator详解
- 装修日志
- POJ 3526 The Teacher’s Side of Math 高斯消元
- 多校6 HDU-6098 Inversion 水题以及神奇的代码操作
- 2017.08.10