APP开发实战45-设计模式介绍3

13.3.5策略模式

策略模式定义一系列的算法,并把每一个算法封装起来, 且使它们可相互替换,使得算法的变化可独立于使用它的客户。

此模式的使用场景:

(1)针对同一类问题的多种处理方式,仅仅是具体行为有差别时。

(2)需要安全地封装多种同一类型操作时。

(3)出现同一抽象类有多个子类,而又需要使用if-else或switch-case来选择具体子类时。

如各类列表的排序功能,及计算各类商品的费用时(不同商品的单价和总价的计算方式可能不同),可以使用策略模式。

13.3.6状态模式

状态模式允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它所属的类。

状态模式将每一个条件分支放入一个独立的类中,这使得可以根据对象自身的情况将对象状态作为一个对象,这一对象可以不依赖于其他对象而独立变化,通过多态来去除过多的、重复的if-else等分支语句。

此模式的使用场景:

(1)一个对象的行为取决于它的状态,且它必须在运行时根据状态改变它的行为。

(2)代码中包含大量与对象状态有关的条件语句,且这些分支依赖于改对象的状态。

(3)出现同一抽象类有多个子类,而又需要使用if-else或switch-case来选择具体子类时。

如电商APP的订单对象有多种状态,及用户登录对象有已登录和未登录两种状态,都可使用状态模式。

13.3.7命令模式

命令模式将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。

此模式的使用场景:

(1)需要抽象出待执行的动作,然后以参数的形式提供出来。

(2)需要支持取消操作。

(3)支持修改日志功能和事务操作。

如游戏开发和菜单功能开发,都可使用命令模式。

13.3.8观察者模式

观察者模式定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。

此模式的使用场景:

(1)有关联行为的地方。

(2)事件多级触发的地方。

(3)跨系统的消息交换,如消息队列和事件总线的处理机制。

Android的BroadcastReceiver组件功能、GUI系统和订阅-发布系统,都是使用观察者模式。

参考:《Android源码设计模式解析与实战》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 设计模式基本原则 开放-封闭原则(OCP),是说软件实体(类、模块、函数等等)应该可以拓展,但是不可修改。开-闭原...
    西山薄凉阅读 9,407评论 3 14
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,280评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,757评论 18 399
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,422评论 2 17
  • 设计模式汇总 一、基础知识 1. 设计模式概述 定义:设计模式(Design Pattern)是一套被反复使用、多...
    MinoyJet阅读 9,425评论 1 15

友情链接更多精彩内容