一、绪论
当redis内容发生变化时需要通知一些观察者做一些动作怎么做?
二、JAVA抽象类
public abstract class AbstractRedisChangeListener {
public abstract void change(String key, String value, String crudType);
}
使用abstract进行修饰一个类
其中抽象类 可以定义抽象方法
public abstract void change(String key, String value, String crudType);
也是需要abstract来修饰,而且抽象类不需要有方法体{}
这样我们就相当于制定了一个自定义的类型。
三、监听redis是否有变化
@Service
public class RedisExtendService {
private List<AbstractRedisChangeListener> listeners;
/**
* redis 数据变化时通知观察者
* @param key
* @param value
*/
public void redisDataChange(String key, String value, String crudType) {
if(CollUtil.isEmpty(listeners)) {
return;
}
for (AbstractRedisChangeListener listener : listeners) {
listener.change(key, value,crudType);
}
}
/**
* 添加观察者,项目上类启动时添加
* @param listener
*/
public void addListener(AbstractRedisChangeListener listener) {
if(listeners == null) {
listeners = new ArrayList<>();
}
listeners.add(listener);
}
}
if(listeners == null) {
listeners = new ArrayList<>();
}
listeners.add(listener);
创建了观察者列表