Android实战设计模式-----状态模式
来源:互联网 发布:小学生大数据分析 编辑:程序博客网 时间:2024/05/22 17:33
定义:
当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类
使用使用场景:
1.一个对象的行为取决于它的状态,并且它的状态必须在运行时根据状态改变它的行为
2.代码中包含大量与对象状态有关的条件语句,例如,一个操作中含有庞大的多分支语句 if -else且这些分支依赖该对象的状态
实战
用户登录系统
取在普通的应用中,一个转发按钮,判断用户登录状态,如果未登录会先让用户登录,然后在执行转发操作
如果是已登录,可以直接执行转发操作。可见,对于一个按钮的操作对于不同状态处理完全不同,
MainActivity代码
LoginActivity
LoginContext
用户状态类 UserState
注销状态未登录状态LogoutState
如果不使用状态模式,在任何调用这些功能时都要进行是否登录的判断,代码逻辑就变成If-else,如果再增加用户一个状态,还需要再支持对这个状态的判断,使得模块很脆弱,一单忘记某个用户状态进行判断,很容易引发用户权限问题,
总结:
状态模式的关键在于不同状态下对同一行为有不同的响应,其实就是一个将if -else用多态来实现的一个例子。
优点:
State模式将所有与一个特定的状态相关的行为都放入一个状态对象中,它提供了一个更好的方法来组织与特定状态相关的代码,将繁琐的状态判断转换成结构清晰的状态类族,在避免代码膨胀的同事也保证了可扩展性与可维护性
缺点:
增加系统类和对象的个数
阅读全文
0 0
- Android 设计模式实战笔记 状态模式
- Android实战设计模式-----状态模式
- 实战设计模式之状态模式
- android 设计模式 状态模式
- Android设计模式-状态模式
- 实战设计模式系列-State(状态)
- 《Android源码设计模式解析与实战》读书笔记(八)——状态模式
- Android 设计模式实战 Builder模式
- Android 设计模式实战 单例模式
- Android 设计模式实战笔记 原型模式
- Android 设计模式实战笔记 策略模式
- Android设计模式实战---责任链模式
- Android中的设计模式-状态模式
- android设计模式之---状态模式
- Android设计模式应用--状态模式
- Android 设计模式 笔记 - 状态模式
- Android中的设计模式-状态模式
- Android设计模式之状态模式
- mybatis和hibernate区别
- Appache配置https
- HDU 4006:The kth great number
- Cookie/Session机制详解
- Activity工作机制
- Android实战设计模式-----状态模式
- Linux系统下vim文本编辑器常用功能,vim命令常用方法
- linux常用命令
- idea报错servlet execution threw an exception
- Python实现快速排序
- 声发射传感器的工作原理是什么?
- 【转】 Unity获取游戏对象详解
- AngularJS 表单验证
- 小米电视、iphone手机、安卓手机等控制浏览器默认缩放大小的方法