Android 设计模式入门到精通之十七:策略模式(Strate
策略模式(Strategy Pattern)
1. 概念
Define a family of algorithms,encapsulate each one,and make them interchangeable.
定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。
2. 应用场景 --比如:依赖注入场景(举例:自行实现Comparator.compare(),再调用容器.sort()排序)
相关概念:
• 控制反转(Inversion of Control,缩写为IoC):是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。
• 依赖注入:中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。
a. 多个类只有在算法或行为上稍有不同的场景;
b. 算法需要自由切换的场景。例如,算法的选择是由使用者决定的,或者算法始终在进化,特别是一些站在技术前沿的行业,连业务专家都无法给你保证这样的系统规则能够存在多长时间,在这种情况下策略模式是你最好的助手。
c. 需要屏蔽算法规则的场景。
现在的科技发展得很快,人脑的记忆是有限的(就目前来说是有限的),太多的算法你只要知道一个名字就可以了,传递相关的数字进来,反馈一个运算结果,万事大吉。
3. 优点:模块用到的算法可自由切换,扩展性良好。
4. 代码实践:
JDK:
• java.util.Comparator#compare()
• javax.servlet.http.HttpServlet
• javax.servlet.Filter#doFilter()
Android: