《单例模式结合观察者模式.ppt》由会员分享,可在线阅读,更多相关《单例模式结合观察者模式.ppt(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单例模式结合观察者模式 n起因:多线程对数据库写操作n办法:让多线程先把数据写到一个公共的arraylist中,等这个list足够大的时候,单开一个线程进行写操作。n方案:n首先,将这个arraylist使用单例模式思想,这样就可以让多线程都用它,并且写一起。n然后,用观察者观察这个arraylist的长度,如果到了指定长度,就进行写操作,同时清空这个arraylist,方便多线程们继续使用。n结果,实现了!n-n感谢对此方案提出过宝贵意见的 姜同学,小强同学,大师同学hoho排名不分先后O(_)O哈哈ndemo:让一个循环让单例的arraylist写数字.每当arraylist长度到5的时候
2、,打印arraylist,并且置空。n代码如下:nSingleton.java 单例的类nJava代码npackage testArray;nimport java.util.ArrayList;nimport java.util.Observable;npublic class Singleton extends Observablenprivate ArrayList arrayList=new ArrayList();nprivate static Singleton singleton=null;n/*n*避免被继承n*/nprivate Singleton()nn/*n*产生单例n*
3、returnnpublic static Singleton getInstance()nif(singleton=null)nsingleton=new Singleton();nnreturn singleton;nn/*n*只要能置空arraylist就行.npublic static void clearInstance()nsingleton.arrayList.clear();nnpublic void putElement(String str)narrayList.add(str);nif(arrayList.size()5)nsetChanged();/触发观察者模式nnot
4、ifyObservers(arrayList);nnnDataOperation.java 操作类nJava代码npackage testArray;nimport java.util.ArrayList;nimport java.util.Observable;nimport java.util.Observer;npublic class DataOperation implements Observer nprivate ArrayList arrayList=null;npublic void update(Observable o,Object arg)nif(arg instanc
5、eof ArrayList)narrayList=(ArrayList)arg;nfor(String s:arrayList)nSystem.out.println(s);nnSystem.out.println(*);nSingleton.clearInstance();/想在这里让那个单例的list置空n更多资料 java培训 http:/ Test.javanJava代码npackage testArray;npublic class Test n/*n*param argsn*/npublic static void main(String args)nSingleton singleton=Singleton.getInstance();nsingleton.addObserver(new DataOperation();nint i=0;nwhile(i12)nsingleton.putElement(i+:ele);ni+;nnn结果:Java代码0:ele1:ele2:ele3:ele4:ele5:ele6:ele7:ele8:ele9:ele10:ele11:ele
限制150内