背景
- 软件:公司有物 App. Android 版
- 目标:LoginAcitivity
- 说明:登录使用了友盟第三方组件,因为微信配置等问题,导致上一版本的微信登录功能没有实现;目前只实现了的有:新浪微博、腾讯QQ;
- 缺点:1. 类过于庞大,导致类的职责包含过多,过杂; 2. SDK老旧,其中微信功能实现有重大更新;
- 补充:1. 因为所有功能都实现在一个类中,因此牵涉的代码较少,容易重构;
重构与设计模式
- 架构:抽离系统的登录功能,独立为登录子系统,并使其成为架构第一层级;
- 设计:使用设计模式的 Command 命令者模式;
实践 Command 模式
- Client : LoginActivity, 创建一个具体命令对象(如原生登录,第三方登录【微信,微博 etc.】)并设定它的接收者;
- Invoker : LoginAuthInvoker, 要求该命令执行这个请求;
- Receiver: SourceLoginAuthCommand, UmengLoginAuthCommand, WeiXinLoginAuthCommand, 知道如何实施与执行一个请求相关的操作。
- Service : LoginConn 到公司有物服务器的登录接口;LoginConnManager 管理到公司有物服务器的登录连接;LoginAuthThirdPartyService 服务于第三方登录的一些琐碎操作及创建 LoginConnManager 对象;

