這是否可以很好地作爲動作腳本中的單例?即是否有任何我應該知道的陷阱,並且確實在這種情況下只會創建一個AVManager實例:一個非常簡單的Singleton?
請注意,我確實得到了預期的輸出(只有一次「實例化的第一次」和數字按照順序):
第一次實例化! 1
FILE 1:2
FILE 2:3
和最後4
下面是文件....
AV_CONFIG.as:
package {
public class AV_CONFIG {
public static var AVM:AVManager = new AVManager();
}
}
AVManager.as:
package {
import flash.events.EventDispatcher;
public class AVManager extends EventDispatcher {
public var someConstantData:uint = 1;
public function AVManager() {
trace('instantiated first time!', someConstantData);
}
}
}
然後:
File1.as:
package {
import AV_CONFIG;
import flash.display.Sprite;
public class File1 extends Sprite {
public function File1() {
AV_CONFIG.AVM.someConstantData++
trace('FILE 1:', AV_CONFIG.AVM.someConstantData);
}
}
}
File2.as:
package {
import AV_CONFIG;
import flash.display.Sprite;
public class File2 extends Sprite {
public function File2() {
AV_CONFIG.AVM.someConstantData++
trace('FILE 2:', AV_CONFIG.AVM.someConstantData);
}
}
}
Main.as(中的DocumentClass):
package {
import AV_CONFIG;
import flash.display.Sprite;
public class Main extends Sprite {
public function Main() {
var f1:File1 = new File1();
var f2:File2 = new File2();
AV_CONFIG.AVM.someConstantData++
trace('and finally', AV_CONFIG.AVM.someConstantData);
}
}
}
實現接口的Singleton的要點是什麼?沒有辦法提供替代實現,因爲客戶端正在程序上檢索特定的實例,而不是提供給他們。 –
好的...那麼你可以用函數替換'const',否? – OXMO456
他使用const來提供全局訪問,這是OOP的對立面,但我認爲const會比靜態函數調用更好地執行,如果您想要我真誠地評價哪種形式的氰化物可以做出最健康的早餐。 –