Android 设计模式入门到精通之十七:策略模式(Strategy Pattern)

策略模式(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: 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • spring官方文档:http://docs.spring.io/spring/docs/current/spri...
    牛马风情阅读 5,689评论 0 3
  • 设计模式 1. 常见的设计模式 1.1 工厂模式简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂...
    熊先森_5094阅读 2,425评论 0 0
  • 【学习总结】 学习的效果很多时候依赖于自身的一个学习“态度”。以自己为例子,我是一个不断追求自我认知的人,因为我渴...
    wc的一些事一些情阅读 5,887评论 0 49
  • 2.1 我们的理念是:让别人为你服务 IoC是随着近年来轻量级容器(Lightweight Container)的...
    好好学习Sun阅读 7,629评论 0 11
  • 本系列出于AWeiLoveAndroid的分享,在此感谢,再结合自身经验查漏补缺,完善答案。以成系统。 Java基...
    济公大将阅读 5,393评论 1 6