Skip to main content

PureMVC 我也會 [0]

最近感覺 PureMVC 又熱了起來,也剛好好久沒有更新文章了,
就順便將去年底做的企業內訓 PureMVC 課程部分整理寫出來,

要講 PureMVC 當然要先從啥是 MVC 講起:

Model-View-Control
出處:維基百科 MVC,大概節錄一段:
  • (控制器Controller)- 負責轉發請求,對請求進行處理。
  • (檢視View) - 介面設計人員進行圖形介面設計。
  • (模型Model) - 程式設計師編寫程式應有的功能(實作算法等等)、數據庫專家進行資料管理和數據庫設計(可以實作具體的功能)。

其實到 Flash 的世界來講,Model and Control 都是由 .as 處理,而 View 便是 .fla+.as ,為了要鬆綁之間的關係,Event 機制就相當重要。其實每個人對 MVC 的最佳解釋都不同,真的要多練習才會有所領悟。

簡單來說:

Model = 餐廳廚房
data: 西餐類
action:依照點菜單做餐點
action: 做完餐點就是將餐點放在出菜口按下通知鈴等服務生來


Control = 服務生
action: 聽到大門歡迎鈴就要說「歡迎光臨」
action: 看到客人揮揮手要去收點菜單
action: 聽到廚房通知鈴看是哪桌的餐點去送菜


View = 餐廳外場
view: 田園式的西餐廳裝潢
action: 客人進門會有歡迎鈴
action: 客人揮揮手叫服務生過來服務,是哪個服務生都無所謂,重點只要會收點菜就行了。
action: 客人收到餐點準備開動

當餐廳要改成外炒店,這時候只需要將大廚換成會中餐廚師,其出的菜就是中式快炒。
當餐廳外場由田園式外觀重新裝潢成華麗感夜店風,其進門的客層也會有所不同。

重點就是當你換掉一個地方時,對其它的部份不會造成太大的影響或者根本無所謂,這就是 MVC 所講求的境界...

一般來說,小專案有沒有必要使用 MVC 就是由各位自己判斷了,當你習慣將程式切分開來,發現 debug 不是一件痛苦的事情時,這時候有沒有強制使用 MVC 倒不是重點,因為你已經養成良好的撰寫習慣。但是開始接觸大型專案配合 team work 時,在沒有一個共用的核心框架前提下,這個專案開發到最後一定會是一個多手多腳的怪物,共用核心框架的價值就在這邊展現,這也是為什麼一堆微型 MVC 框架的產生,也讓各位不得已要開始學習它們。

講在 PureMVC 系列開始前:
初學的時候絕對別為了框架而框架。突然想到有一句佛偈語:「見山是山,見山不是山,見山又是山」,見山又是山這就是設計模式應用的最高境界啊!

Comments

  1. View--業務
    Control--專案經理
    Model--程式設計師

    ^ ^

    ReplyDelete
  2. View或許也可以嘗試另一個方式,用.swc搭配.as來用:)

    ReplyDelete

Post a Comment

Popular posts from this blog

[AIR] JoSiResize - Mobile 開發小工具

JoSiResizev0.6.0,Adobe AIR 3 runtime之前開發 tool app 的時候並沒有很深刻的體認到圖片素材的 resize 是一個很麻煩的事情...畢竟圖片使用量並不大,等到開發遊戲類的 app 才發現光處理不同螢幕尺寸的圖片素材是一個相當折磨人的工作。
因此 JoSiResize app 誕生了~~~原理是採用最小 scale 長寬比例不變的方式進行放大縮小。使用方法非常簡單,設定好變更的尺寸,接下來,將需要處理的圖片檔案全選直接拖曳到視窗內,畫面即會跳出預備儲存的檔案夾選擇畫面,確認後即開始轉檔。

PureMVC for Titanium Mobile

為了秉持著哪裡都要用 PureMVC 的想法,試著修改 PureMVC 官網上提供的 Javascript 版本給 Titanium 使用。
**source code**
有任何問題請上:Titanium Mobile 中文開發者論壇

建立 instance 的方法:使用 Puremvc 為 namespace
Ti.include('puremvc-js-1.0.js');
var c = Puremvc.clone( Puremvc.SimpleCommand );
var p = Puremvc.clone( Puremvc.Proxy, "TestProxy", "This is TestProxy's data" );
var m = Puremvc.clone( Puremvc.Mediator , "MainMediator" );

[作品]Flex 3.4 + PureMVC 的企業級 RIA 應用

認識 Erin 的人都知道, Erin 最懶得寫作品集相關的文章,但是這個案子比較有趣,所以特別提出來聊一下囉!

廚櫃業某公司內部軟體,目前系統尚在 Beta 階段,所以下面圖片皆有模糊化處理。


[可擴充功能面板首頁,後台皆包含在管理系統內(有 iPhone 的 fu)]

這個案子是幫一家傳統公司做的專用軟體線上化,想要開發企業級 RIA 想當然爾就是使用 Flex 來處理囉!

整個案子前端是以 Flex SDK 3.4 + Flex Builder3, PureMVC MultiCore for AS3, Utility - AS3 StateMachine 以及先前 Erin 所發表的 WidgetsConsole 來處理整個系統的轉換。

整個系統包含前後台共七大系統,分別是:估價,客戶,店面管理,貨品上架,會員管理,分店系統以及權限系統。超級管理員可以利用權限系統分別開出不同職級的權限,然後使用者透過同一入口,依照權限區分,畫面會顯示不同的功能。整個系統最複雜的部份當然是估價系統,由於櫥櫃的建立是透過選擇資料即時演算出來,更何況櫥櫃類的 BOM 表階層是怪物般的可怕...所以在 DB 的建置與前端資料整合的部分著實費了我們一番苦心。


[櫥櫃 BOM 表編輯視窗及櫥櫃 BOM 單物件材質指定]

此外,在 UI 設計上也特別花了一些心思。本案子 Target User 是管理者、店長與公司旗下的業務群,此公司成員年齡約 30-60 歲,皆為一般電腦使用者,所以 UI 設計及操作 Flow 必須比一般線上 RIA 更加友善,才能幫助縮減公司的人事教育花費。如放大整個系統的標準字 size;新增資料時不能碰的快速鍵會鎖定;產品類縮圖雙點擊即可觀看放大圖;操作 flow 皆以左上至右下結束以及利用畫面引導使用者操作都是一些設計上的巧思。


[新增估價單]


[簡單易用的業務員用客戶系統]

此外這個專案在實作 PureMVC 過程當然是相當的快樂,因為它的彈性與權職切分實在太令人滿意了!不管是擴充性,Rich Data 管理又或者除錯都非常的容易。當然本人早就已經是 PureMVC 的忠實粉絲了...=P
快來加入 Flex + PureMVC 的行列吧~~

結果這篇到最後變成 PureMVC 的勸進文...XD