被观察者
代码如下 | 复制代码 |
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 } |
茶杯头甜蜜终章dlc 官方手机版v1.0.0.3
下载火柴人传说暗影格斗内置菜单 最新版v3.0.1
下载荒野乱斗测试服 安卓版v61.10.3
下载荒野乱斗彩虹服 安卓版v61.10.3
下载寒霜启示录 安卓版v1.25.10
寒霜启示录是一款生存模拟游戏,不少玩家可能对于末日都有着自己
末日城堡免广告版 安卓最新版v0.7.1
末日城堡免广告版是一款非常好玩的模拟经营类游戏,内部可以不看
甜蜜人生模拟器 最新版v1.4.5
甜蜜人生模拟器是一款非常好玩的模拟恋爱手游,玩家在这里能够对
武器锻造师内置功能菜单 v10.4
武器锻造师内置菜单版是游戏的破解版本,在该版本中为玩家提供了
开放空间overfield 安卓版v1.0.5
开放空间Overfield是一款箱庭养成经营手游,让你在广阔