【每日一记】设计模式——策略模式
来源:互联网 发布:数据库系统工程师入门 编辑:程序博客网 时间:2024/05/22 05:17
概述
- 定义:定义不同的算法族,并且之间可以互相替换,使算法的变化独立于使用算法的客户
- 试用场景:
- 多个类只区别在表现行为不同
- 需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其它方式来实现
- 对客户隐藏具体策略(算法)的实现细节,彼此完全独立
实现
// 策略接口public interface Strategy { void operate();}// 具体策略class ConcreteStrategyA implements Strategy { @Override public void operate() { System.out.println("StrategyA"); }}// 具体策略class ConcreteStrategyB implements Strategy { @Override public void operate() { System.out.println("StrategyB"); }}
// 环境角色类class Context { private Strategy s; public Context(Strategy s) { super(); this.s = s; } public void use() { s.operate(); }}
// 客户端public class Client { public static void main(String[] args) throws Exception { Context c1 = new Context(new ConcreteStrategyA()); c1.use(); Context c2 = new Context(new ConcreteStrategyB()); c2.use(); }}
策略模式将算法进行封装,使得算法可以独立变化,但策略模式并不决定在何时使用何种算法。在什么情况下使用什么算法是由客户端决定的
实际应用
java.util.Comparator
java.utl.Collections
Comparator为策略接口,其实现类为具体策略类,Collections为环境角色类,客户端调用Collections.sort()方法传入具体策略类以实现排序
0 0
- 【每日一记】设计模式——策略模式
- 每日设计模式——策略模式
- 每日一设计模式之策略模式
- 【每日一记】设计模式——单例模式
- 【每日一记】设计模式——工厂模式
- 【每日一记】设计模式——建造者模式
- 【每日一记】设计模式——原型模式
- 【每日一记】设计模式——适配器模式
- 【每日一记】设计模式——装饰器模式
- 【每日一记】设计模式——代理模式
- 【每日一记】设计模式——外观模式
- 【每日一记】设计模式——桥接模式
- 【每日一记】设计模式——组合模式
- 【每日一记】设计模式——享元模式
- 【每日一记】设计模式——模板方法模式
- 【每日一记】设计模式——观察者模式
- 【每日一记】设计模式——迭代器模式
- 【每日一记】设计模式——责任链模式
- 棋盘问题 POJ - 1321
- SQL优化(待完善)
- h5学习之9(html第一阶段学习练习)
- 1622-5 孔富晨 总结《2016年12月16日》 【连续第77天总结】
- [LeetCode]Isomorphic Strings
- 【每日一记】设计模式——策略模式
- 盒子布局模式**login界面
- OpenCV入门三:OpenCV创建新图像以及遍历图片像素值和设置像素值
- Android 自定义View探索——图片
- 文章标题 SSL1624 小萨的烦恼
- sqlalchemy
- 麦森数 SSL1030
- 第一个程序及其注意事项
- POJ 1611 The Suspects