被观察者
| 代码如下 | 复制代码 |
publicclassObservable
List
booleanchanged =false;
/** * Adds the specified observer to the list of observers. If it is already * registered, it is not added a second time. * * @param observer * the Observer to add. */ publicvoidaddObserver(Observer observer) { if(observer ==null) { thrownewNullPointerException("observer == null"); } synchronized(this) { if(!observers.contains(observer)) observers.add(observer); } }
/** * Clears the changed flag for this {@code Observable}. After calling * {@code clearChanged()}, {@code hasChanged()} will return {@code false}. */ protectedvoidclearChanged() { changed =false; }
/** * Returns the number of observers registered to this {@code Observable}. * * @return the number of observers. */ publicintcountObservers() { returnobservers.size(); }
/** * Removes the specified observer from the list of observers. Passing null * won't do anything. * * @param observer * the observer to remove. */ publicsynchronizedvoiddeleteObserver(java.util.Observer observer) { observers.remove(observer); }
/** * Removes all observers from the list of observers. */ publicsynchronizedvoiddeleteObservers() { observers.clear(); }
/** * Returns the changed flag for this {@code Observable}. * * @return {@code true} when the changed flag for this {@code Observable} is * set, {@code false} otherwise. */ publicbooleanhasChanged() { returnchanged; }
/** * If {@code hasChanged()} returns {@code true}, calls the {@code update()} * method for every observer in the list of observers using null as the * argument. Afterwards, calls {@code clearChanged()}. * * Equivalent to calling {@code notifyObservers(null)}. */ publicvoidnotifyObservers() { notifyObservers(null); }
/** * If {@code hasChanged()} returns {@code true}, calls the {@code update()} * method for every Observer in the list of observers using the specified * argument. Afterwards calls {@code clearChanged()}. * * @param data * the argument passed to {@code update()}. */ publicvoidnotifyObservers(T data) { intsize =0; Observer[] arrays =null; synchronized(this) { if(hasChanged()) { clearChanged(); size = observers.size(); arrays =newObserver[size]; observers.toArray(arrays); } } if(arrays !=null) { for(Observer observer : arrays) { observer.update(this, data); } } }
/** * Sets the changed flag for this {@code Observable}. After calling * {@code setChanged()}, {@code hasChanged()} will return {@code true}. */ protectedvoidsetChanged() { changed =true; } } | |
观察者
| 代码如下 | 复制代码 |
publicinterfaceObserver publicvoidupdate(Observable } | |
原神祈愿模拟器最新版
原神祈愿模拟器手机版是一款完整汉化的趣味原神抽卡模拟小游戏,
宝宝森林美食完整版
宝宝森林美食游戏最新版是一款十分有趣的休闲益智游戏,帮助宝宝
g沙盒仇恨官方英文版(gorebox)
G沙盒仇恨英文原版是一款最近非常火热的沙盒模拟类游戏,在这里
迷你世界测试服最新版2024
迷你世界测试服2021最新版,即迷你世界的先遣服版本,用户能
闪耀暖暖最新版2024
闪耀暖暖手游这是非常好玩的换装手游,游戏内容丰富有趣,游戏环