android源码中不同设计模式的使用总结

设计模式之中介者模式 - Mediator

2017-03-07  本文已影响18人  ahking17
介绍

中介者持有多个对象的引用, 而多个对象中只持有中介者的引用,这样, 这些对象之间没有依赖关系, 对象之间的交互都是通过中介者来完成的.
以PC为例, 主板就是中介者, CPU, 显卡, IO设备, 这些部件之间的交互都是通过主板来完成的, 这些对象之间不直接调用对方, 这样就避免了对象之间过多的依赖关系.

android 源码中的使用

屏幕解锁功能的实现, KeyguardViewMediator作为中介者, 协调几个manager之间的交互.

public class KeyguardViewMediator {
    private AlarmManager mAlarmManager;
    private AudioManager mAudioManager;
    private StatusBarManager mStatusBarManager;
    private PowerManager mPM;

}
使用场景

登录界面的实现.
登录界面中, 一般包含账户输入框, 密码输入框, 确定按钮,取消按钮, 保存密码checkbox, 自动登录checkbox, 这样6个控件.
这些控制之间的状态是互相有影响的, 例如只有当账户和密码输入框都不为空的时候, 确认按钮才是可点击的状态, 否则置灰显示.
按照之前的实现思路是, 为每个控件设置text_change_listener, text change时,根据自己的状态, 去设置其他控件的状态. 这样做,想想代码就会非常的乱.

好的解决方案是, 让Activity作为中介者, 每个控件设置自己的text_change_listener, 当text change时, 都去调用activity的change()方法.
在change()中, 统一根据各个控件的情况去设置其他控件的状态(是否置灰显示, 是否可点击), 这样就避免了各个控件直接去设置其他控件的状态.
代码会非常的整洁和好维护.

-----DONE.-------

上一篇下一篇

猜你喜欢

热点阅读