Revision: 21756
Updated Code
at December 20, 2009 02:39 by alejandromb
Updated Code
package kc.core { import flash.errors.IllegalOperationError; import flash.utils.Dictionary; public class KCSingleton extends Object { // @const public static const ERROR:String = "Illegal instantiation attempted on class of singleton type."; // @private private static var _records:Dictionary; // @constructor public function KCSingleton() { throw new IllegalOperationError( ERROR ); } // @methods public static function register( api:String, value:Class ):void { if( _records == null ) { _records = new Dictionary(true); } if( ! KCSingleton.getClass( api ) ) { _records[api] = value; } } public static function getClass( api:String ):Class { if( _records == null ){ throw new IllegalOperationError("No records."); } return _records[api]; } public static function getInstance( api:String ):* { var instance:Class = KCSingleton.getClass(api); if( ! instance ){ throw new Error("No class registered for interface \""+api+"\"."); } return instance["getInstance"](); } public static function purge(...rest):void { _records = null; } } }
Revision: 21755
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at December 20, 2009 02:38 by alejandromb
Initial Code
package kc.core { import flash.errors.IllegalOperationError; import flash.utils.Dictionary; public class KCSingleton extends Object { // @const public static const ERROR:String = "Illegal instantiation attempted on class of singleton type."; // @private private static var _records:Dictionary; // @constructor public function KCSingleton() { throw new IllegalOperationError( ERROR ); } // @methods public static function register( api:String, value:Class ):void { if( _records == null ) { _records = new Dictionary(true); } if( ! KCSingleton.getClass( api ) ) { _records[api] = value; } } public static function getClass( api:String ):Class { if( _records == null ){ throw new IllegalOperationError("No records."); } return _records[api]; } public static function getInstance( api:String ):* { var instance:Class = KCSingleton.getClass(api); if( ! instance ){ throw new Error("No class registered for interface \""+api+"\"."); } return instance["getInstance"](); } public static function purge(...rest):void { KCPurger.purgeCollection( _records ); _records = null; } } }
Initial URL
http://www.kirikacode.com
Initial Description
Initial Title
AS3 | KCSingleton
Initial Tags
Initial Language
ActionScript 3