2011/2/24

公司制度與設計模式

物件導向程式是定義一堆類別(Class)
執行時會 new Class() 得到一堆實體(Instance)

我說公司裡的每一個員工就像是一個Instance
Class是他們的職稱
Class裡code是他們的工作內容

或者更嚴謹一點地說
Interface是他們的職稱
每個人都有一個自己的Class去實作職稱
而且每個Class都是Singleton (但是這樣講就太複雜了)

上面所說的,是在建立一間公司的物件導向模型


我們寫物件導向程式為什麼會需要使用設計模式
就是因為設計模是能夠讓程式更好維護和有彈性
而且是經過許多專案和時間的驗證

對公司來說,設計模式可以說是公司制度
好的公司有好的公司制度,如果我們將這些制度抽離出來
那就是公司的設計模式

從這個角度看就可以說明一間公司有良好的制度
會使得公司在環境改變下求生存的機率提升(因為有彈性和好維護)
也可以說明一間公司制度設計得太複雜(過度設計 (Over Engineering))
就會造成效率低落,因為員工把大部分的時間都拿去維護制度了

所以一個好的公司領導人應該要會的是設計良好的制度,比方說建立SOP等等
還要讓員工和員工之間低耦合,這樣有人要離職的時候才不會很慘 = =
或者我們可以用OOAD的概念去設計公司制度

最後,一人公司就是神之物件的代表

2011/2/22

PureMVC 心得

一個應用程式由三種東西組成:Model、View、Controller
Model 是資料模型
View 是顯示畫面
Controller 是程式流程


PureMVC架構下是由一個 Facade 管理 Model、View 和 Controller
根據PureMVC說明文件Facade pattern的定義
Model class、View class 和 Controller class是確實存在的
但是我們看不到,因為已經被 Facade 包裝起來了


我們能寫的部分是Proxy、Mediator 和 Command
然後註冊給 Facade
理論上,Facade 應該會:
將 Proxy 交給 Model 管理
將 Mediator 交給 View 管理
將 Command 交給 Controller 管理
但因為Facade已經將MVC架構包裝好了,所以我們並不需要管這些東西


就我的觀點來看
每個 Mediator 會負責管理一個像是flash內建 "組件" 的那種東西
只有這個 Mediator 有權力存取這個組件
組件則是在畫面上的控制項,組件本身應該要提供和使用者互動的能力
而在PureMVC,將組件稱為viewComponent


在 Mediator 裡,我們應該會寫兩種東西
1. 註冊 "什麼時機(Notification)" 要去存取 viewComponent
2. 當使用者對 viewComponent 作互動時,丟出 Notification


我認為一個TextField加上一個Sprite不能說是viewComponent
因為他沒有經過包裝,提供存取的方法


我在某些人的範例中有看到 Mediator 會包含一些 viewComponent 本身的存取方法
但如果Mediator 跟 viewComponent 切不開,那麼組件就無法在其他專案重用
或者說重用 viewComponent 的時候你就會發現你的 Mediator 有些 code 會重複


每個 Proxy 會負責和內部或外部資料作存取
在這裡指的內部,是指存在 flash player 記憶體中的變數資料
外部應該是後端的 web service server 或是某個外部檔案,總之不是在記憶體內的變數資料
我們會在 Proxy 裡面寫好存取內外部資料的程式,和丟出資料變更的事件


最後我們會在 Command 決定何時該去存取 Proxy


其中 code 可以在其他專案重用的部分有 viewComponent 和 Proxy
Mediator 和 Command 應該是很少機會能重用


以上全是猜測,因為我沒寫過PureMVC專案,我只看過文件和幾個範例和參加第1次AS讀書會


如果要用我上次畫的精美圖片來解釋 javascript 版本的 web programing


那就是用 Mediator 去包裝 3、4
用 Proxy 去包裝 2、5
用 Command 串接 2 → 3 和 4 → 5

不過我現在重看這張圖我好像數字寫錯了,執行順序應該是 4 → 5 → 6 → 1 → 2 → 3

2011/2/21

辨色力分數統計分布

辨色力測驗Alpha
遊戲連結
分數統計 (分數代表誤差 越低越好)

RGB調色力一分鐘版Alpha
遊戲連結
分數統計 (分數越高越好)

CMYK調色力一分鐘版Alpha
遊戲連結
分數統計 (分數越高越好)

即時運算的圖表太吃效能,改為定期更新的圖表

2011/2/19

CMYK調色力一分鐘版alpha

測驗連結:http://webetrex.appspot.com/colorTest/CMYKfitAlpha.html

測驗方式:

 題目由亂數產生

 請使用CMYK選色器選出與題目最相近的顏色

 選好之後按下OK 到下一題

 測驗時間共一分鐘

 分數是依據答題數和顏色的精準度

RGB調色力一分鐘版alpha

測驗連結:http://webetrex.appspot.com/colorTest/RGBfitAlpha.html

測驗方式:

 題目由亂數產生

 請使用RGB選色器選出與題目最相近的顏色

 選好之後按下OK 到下一題

 測驗時間共一分鐘

 分數是依據答題數和顏色的精準度

2011/2/18

Web Programing

2011/2/16

辨色力測驗alpha

測驗連結:http://webetrex.appspot.com/colorTest/gameAlpha.html

測驗方式:
題目共五題由亂數產生
請使用RGB選色器選出與題目最相近的顏色
選好之後按下OK 到下一題

五題結束後就可以看到分數和花掉的時間

測驗結果統計:
抽樣:PTT little-games版上 172 人次鄉民
google doc

統計結果:
 分數平均 70.21
 時間平均 3分45秒

分數分布圖: