今天写代码认真的了解了代码中的观察者模式,了解的很简单的观察者,用的自己的工程已经搭建好的观察者模板,新建一个observerSubject继承工程中已经实现好的basesubject,再实现一个接口用于实现发生时候要执行的事件,之后就是在代码合适的位置继承这个接口,并实现函数,这样代码在执行到已经注册好监听事件的类中的时候逻辑就会走到重写的接口函数中去(实现注册监听的逻辑就是在subject类中实现的,我写的subject是继承的公司封装好的basesubject,直接实现里面的接口注册的,这里不要忘记在需要监听之后发生改变的类中注册register观察者,之后退出的时候不要忘记反注册就行了。)
贴上代码:
public classArmySkinManagerextendsBaseSubjectimplementsIArmyUseSkinSubject{
@Override
public voidregisterTemplateObserver(IArmyUseSkinObserver observer) {
registObserver(observer);
}
@Override
public voidunregisterTemplateObserver(IArmyUseSkinObserver observer) {
unregistObserver(observer);
}
@Override
public voidnotifyTemplateUpdate(SkinInfom model, booleanresult) {
List observers =newArrayList<>(getObservers());
for(IArmyUseSkinObserver observer : observers){
observer.onUpdateSkin(model,result);
}
}
}
之后贴上subject代码:
public interfaceIArmyUseSkinSubject {
/**
* 注册皮肤监听
*@paramobserver
*/
voidregisterTemplateObserver(IArmyUseSkinObserver observer);
/**
* 取消皮肤监听
*@paramobserver
*/
voidunregisterTemplateObserver(IArmyUseSkinObserver observer);
/**
* 启用通知皮肤刷新
*@parammodel皮肤
*@paramresult是否启用成功
*/
voidnotifyTemplateUpdate(SkinInfom model, booleanresult);
}
接口代码:
public interfaceIArmyUseSkinObserver {
voidonUpdateSkin(SkinInfom model,booleansuccess);
}
关于观察者模式了解的还不够彻底,只是一点皮毛,刚学会用而已,之后在继续了解里面具体的逻辑。