登录注册模块、状态保持模块
2016-07-17 05:18
204 查看
登录的方式
1.账号登录
使用在app上注册的账号和密码进行登录,登录成功改变本地登录状态。2.快捷登录
使用QQ、微信进行快捷登录,登录成功改变本地登录状态。登录状态管理
使用状态模式进行登录状态管理,在用户登录和未登录的情况下,对于同一事件处理行为是不一样的。在一些依赖状态的操作,如果用户是登录状态,则进行直接操作,如果不是登录转态那就不能进行直接操作。减少if-else逻辑,增强代码的课拓展性和可维护性。1.定义状态接口
在接口中定义依赖登录相关状态的操作import android.content.Context; /** * Created by Shinlone on 2016/6/14. * 定义依赖状态的操作,在这里主要有登录状态和未登录状态会拓展此接口 * 后期可以根据此接口实现一些其他转态,比如已经登录但限制操作的状态 */ public interface UserState { /** * 购买操作 * @param context */ public void buy(Context context); /** *评论操作 * @param context */ public void comment(Context context); /**添加其他与状态相关的接口**/ }
2.实现状态接口
实现UserState接口,分别构建登录状态和未登录状态登录状态实现
import android.content.Context; /** * 已经登录状态 * Created by Shinlone on 2016/6/14. */ public class LoginedState implements UserState { @Override public void buy(Context context) {//可以正常购买 // 具体操作 } @Override public void comment(Context context) {//可以正常评论 // 具体操作 } }
未登录状态实现
import android.content.Context; /** * Created by Shinlone on 2016/6/14. */ public class LogoutState implements UserState { @Override public void buy(Context context) {//注销状态下不能进行购买操作 // 具体操作,比如跳出登录 } @Override public void comment(Context context) { } }
状态管理实现
运用单例模式进行全局的状态管理,默认状态为未登录状态,并提供获取实例和切换状态的方法。import android.content.Context; /** * Created by Shinlone on 2016/6/14. * 用户状态管理 */ public class LoginContext { //默认状态为未登录状态 UserState mState = new LogoutState(); static LoginContext sLoginContext = new LoginContext(); private LoginContext() { } /** * 获取操作实例 * * @return */ public static LoginContext getsLoginContext() { return sLoginContext; } /** * 切换转态 * * @param mState 传入状态 */ public void setState(UserState mState) { this.mState = mState; } public void buy(Context context) {//当前状态购物操作 mState.buy(context); } public void comment(Context context) {//当前状态的评论操作 mState.comment(context); } }
状态管理器使用
登录转态默认为未登录转态,当用户登录成功后先保存用户token及用户信息然后将状态切换至已经登录状态;在token超时的情况下先把状态切换至未登录状态。具体使用代码如下:未登录状态
LoginContext.getsLoginContext().setState(new LogoutState());//切换至未登录转态,用户超时切换至此状态 LoginContext.getsLoginContext().buy(Activity.clsss);//执行购物操作不会直接购物,跳至登录界面
登录状态
LoginContext.getsLoginContext().setState(new LoginedState());//切换至登录状态,登录成功数据保存后切换至此状态 LoginContext.getsLoginContext().buy(Activity.clsss);//执行购物操作跳转至订单生成页面
相关文章推荐
- 终于有时间了,把我前几天写的东西弄完了
- 旋转矩阵的数学原理
- 基于链式存储结构的线性表
- HTML5学习笔记
- LeetCode--No.112--Path Sum
- Ipython Notebook升级版Jupyter Notebook远程服务器配置
- LeetCode 62. Unique Paths
- LeetCode--No.111--Minimum Depth of Binary Tree
- 关于android studio 运行微博官方的 weibosdkdemo 所出现的问题及解决方法整理
- opencv中的各种滤波函数
- 操作系统之进程与线程
- LeetCode 375. Guess Number Higher or Lower II
- 电话那头的牵挂
- URL与资源,报文结构详解
- Maven的安装与配置
- HDU 3912 Turn Right(模拟)
- Sublime Text 中使用Git插件连接GitHub
- python中多线程中GIL的介绍
- 批量修改字幕文件中的时间,c语言实现
- MFC注册表操作