1. 程式人生 > >cocos2dx的幾種常見設計模式

cocos2dx的幾種常見設計模式

第二個問題是為什麼要這麼用,對於c++程式設計師來說初始化工作不都是在建構函式中完成的嗎,cocos中為何要這麼做呢?這裡引述一下王哲的話:“其實我們設計二段構造時首先考慮其優勢而非相容cocos2d-iphone. 初始化時會遇到圖片資源不存在等異常,而C++建構函式無返回值,只能用try-catch來處理異常,啟用try-catch會使編譯後二進位制檔案大不少,故需要init返回bool值。Symbian, Bada SDK,objc的alloc + init也都是二階段構造”。現在大家明白了吧,相容cocos2d-iphone是一個原因,另一個重要的原因是建構函式沒有返回值啊,如果載入資源圖片的時候不存在怎麼辦,所以初始化的工作寫在init函式中,這個函式返回的bool值用來判斷是否初始化成功。使用這種方法還可以強化設計,想想自己寫程式碼的時候是不是因為沒有初始化某個成員變數導致了bug,這樣做就是提醒你記得要在init中初始化成員變數。通過create靜態函式返回的這個物件也實現了cocos2dx中的記憶體管理,就不用我們自己麻煩了。還有一個原因是在c++的建構函式中是不能呼叫虛擬函式的,為了呼叫虛擬函式來完成一些功能就要寫在init函式中。