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源码设计模式解析与实战》

你可能感兴趣的:(APP开发实战45-设计模式介绍3)