AX单例模式

有MVC开发经历的童鞋,可能发现X++由于不支持静态变量是不支持单例模式,Form之间传值只能通过Args类传递。这样程序开发的灵活性就大大受到限制。

有人发现,通过系统全局缓存机制来实现单例模式。

 1 public static SingletonClass getInstance()
 2 {
 3     SingletonClass instance;
 4     SysGlobalCache globalCache = infolog.objectOnServer() ? appl.globalCache() : infolog.globalCache();
 5     ;
 6 
 7     if (globalCache.isSet(classStr(SingletonClass), 0))
 8         instance = globalCache.get(classStr(SingletonClass), 0);
 9     else
10     {
11         instance = new SingletonClass();
12         infoLog.globalCache().set(classStr(SingletonClass), 0, instance);
13         appl.globalCache().set(classStr(SingletonClass), 0, instance);
14     }
15 
16     return instance;
17 }

SingletonClass这个类的实例被存储在SysGlobalCache类型的对象globalCache中,它将一直被保存在缓存中直到系统被关闭。

posted @ 2012-08-28 08:29  Sprite.z  Views(309)  Comments(0Edit  收藏  举报