abstract factory - flash as2 版範例

In actionscript   May 12, 2005 - 12:53 am

熱血青年的範例(英文)

cesar(怎麼聽都像狗食的名字啊…..)的blog寫了一系列以actionscript 2 為主的pattern 範例,其中 abstract factory與prototype pattern最為實用。

由於進行中的案子複雜度越來越高,最近非常頻繁的在處理as2 與 pattern的實作問題,在過程中開始漸漸發現actionscript compiler的一些缺點:

1、as compiler只會進行 compile time check(型別檢查等),因此如果在runtime出現意外,往往不會被抓到,這是actionscript 1/2 不夠嚴謹的一面。

2、as2 不支援 abstract class與method overloading使得許多現代語言的優點(例如java, C#)無法port到as2,雖然變通的方法總是有,例如用 interface取代abstract class, 用switch case取代 overloading,或甚至用3rd party 像 as2lib這樣的library來硬加上這些功能,但這麼基本的東西仍然應該是成熟的現代語言該具備的。

3、as2的不嚴謹與獨特的class structure使得對compiler行為夠瞭解的工程師可以有許多後門,例如actionscript class一定要與某個mc結合才能出現在畫面上,而MC是當然的Object成員,因此在class 裏凡是不確定型別的物件,通常都可以用Object 騙過去。但這種泛Object的鬆散屬性往往也會帶來許多缺點,例如原本該被封裝在物件內的private property與 method在某些情況下會被reveal出來(例如跑個 for..in loop),或是某個物件丟給dataset處理後再拿出來時型別已經變成統一的Object然後要自已再cast回去。

最後的結果就是:工程師(通常也就是我)得兼任compiler的角色,時時注意型別檢查與繼承鍊的維護,而習慣不好的工程師可能就樂得走後門隨意使用型別或class chain來快速達到目地(但造成後續維護困難甚至難以追蹤的bug),本來這些事都應該在compiler這層負責把關並提醒的啊… orz

ps. 這些問題我已經當面問過 gary grossman(flash player / actionscript開發負責人) 許多次,每人都看者一個大鼻子露出自信的微笑點頭說 I know it, we are currently working on it…..

by admin

留言回應

hidden

您的留言會先經過站長認証後才刊登在網站上。
your comments will be approved by Administrator before appearing on the page.

Trackback this post  |  Subscribe to the comments via RSS Feed

mobile phone