享元和单例模式(六)
单例模式:整个项目只存在一个对象实例.
publicclassSingle{privatestaticSingle_single=null;privatestaticobjectlockObject=newobject();privateSingle(){}publicstaticSingleCreateInstance(){if(_single==null){lock(lockObject){if(_single==null){_single=newSingle();}}}return_single;}}
如果是多线程则需要用到Lock和外层多加一层If
享元模式:可以是整个项目共用一个对象实例,也可以按需要创造不同的实例.
publicstaticclassMemberLevelConfig{publicstaticDictionary<MemberLevel,BaseMember>MemberDictionary=newDictionary<MemberLevel,BaseMember>(){{MemberLevel.Normal,newNormalUser()},{MemberLevel.Silver,newSilverUser()},{MemberLevel.Gold,newGoldUser()},{MemberLevel.Diamond,newDiamondUser()},};}
策略模式和简单工厂中(二)中的MemberLevelConfig也算是一个简单的享元模式的应用.
Normal可以实例化新的对象,也可以项目共享MemberLevelConfig中的对象
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。