单例模式:整个项目只存在一个对象实例.


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中的对象