<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    云自無心水自閑

    天平山上白云泉,云自無心水自閑。何必奔沖山下去,更添波浪向人間!
    posts - 288, comments - 524, trackbacks - 0, articles - 6
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
    這一段時(shí)間在 Cairngorm上搭建了一個(gè)小項(xiàng)目, 順便小結(jié)一下開發(fā)過程:
    1. 首先規(guī)劃構(gòu)建View, 將一個(gè)應(yīng)用的界面, 分成適當(dāng)?shù)腗xml Component
    2. view中必然涉及的需要數(shù)據(jù)的綁定, 將組件需要的數(shù)據(jù)都集中到ModelLocator中.
    3. 設(shè)計(jì)事件(CairngormEvent), 也就是與用戶交互的過程中以及系統(tǒng)運(yùn)轉(zhuǎn)的過程中會(huì)需要派發(fā)哪些事件,
    需要注意的一點(diǎn)是, Cairngorm中Flex事件也需要轉(zhuǎn)化成CairngormEvent
    4. 設(shè)計(jì)事件的處理函數(shù), 也就是命令. 在FrontControl中對(duì)事件和命令進(jìn)行注冊(cè).
    5. 命令中通過代理去調(diào)用服務(wù).
    5. 設(shè)計(jì)代理類, 在代理類中調(diào)用服務(wù)
    5. 設(shè)計(jì)命令中涉及的服務(wù)(最可能的是與數(shù)據(jù)庫(kù)的交互), 并添加相應(yīng)的配置
    6. 設(shè)計(jì)服務(wù)中需要使用的ValueObject
    7. 命令中如果需要對(duì)視圖組件數(shù)據(jù)進(jìn)行存取, 需要通過ViewHelper來完成, 設(shè)計(jì)相應(yīng)的ViewHelper.
    同時(shí)在mxml中對(duì)viewHelper進(jìn)行注冊(cè).

    補(bǔ)充說明: 事件的產(chǎn)生不一定全部是與用戶交互的結(jié)果, 也就是說不全是由View產(chǎn)生的.
    當(dāng)然大部分的事件(比如用戶點(diǎn)擊了保存按鈕)是這樣產(chǎn)生的.
    在命令中也可以產(chǎn)生命令, 典型的就是SequenceCommand, 應(yīng)用中可以把一個(gè)事件的處理分成幾個(gè)步驟來完成,
    完成第1個(gè)步驟后怎么通知第2個(gè)步驟開始呢, 當(dāng)然還是繼續(xù)派發(fā)事件啦. 在SequenceCommand在類中,
    把派發(fā)事件封裝了一下, 給出了一個(gè)executeNextCommand()可以直接調(diào)用.
    不過在這里我也遇到了一個(gè)問題, 直接使用SequenceCommand的executeNextCommand()并不管用.
    好象dispatchEvent并沒有效果, 我后來是自己修改了代碼, 使用Application.application.dispatchEvent才解決問題的.

    Cairngorm的優(yōu)點(diǎn):
    一. 實(shí)現(xiàn)了比較徹底的解耦
    1. 事件機(jī)制, 對(duì)用戶的響應(yīng)(比如點(diǎn)擊保存按鈕), 并不是直接從View中抓取數(shù)據(jù), 然后New一個(gè)類, 調(diào)用這個(gè)類的某個(gè)方法,
    將數(shù)據(jù)保存到數(shù)據(jù)庫(kù)中, 而只是簡(jiǎn)單地派發(fā)一個(gè)事件, 具體事件由誰來響應(yīng), 如何處理對(duì)他來說是透明不可見的.
    2. Locator模式, Cairngorm中service, view, model的獲取都是通過Locator的,
    也就是說系統(tǒng)其他部分對(duì)于service, view, model只需要知道其ID就夠了, 其內(nèi)部實(shí)現(xiàn)等待細(xì)節(jié)都是不需要知道的.
    舉個(gè)例子, 傳統(tǒng)的方法: 你要找一個(gè)叫張三的人幫你干一件事, 你需要知道張三長(zhǎng)什么樣,
    然后在一個(gè)坐著10個(gè)人的大辦公室里找到他, 告訴他你的要求.
    而現(xiàn)在在這個(gè)大辦公室的門口多了一個(gè)前臺(tái)小姐, 你只需要告訴這個(gè)小姐,我要找張三, 然后她會(huì)幫你去找,
    你根本不需要知道張三的模樣.

    RIA的優(yōu)點(diǎn): 由于Flex的原因, 系統(tǒng)處理是異步的.
    比如, 你請(qǐng)求了一個(gè)比較耗時(shí)的數(shù)據(jù)庫(kù)讀取操作, 請(qǐng)求發(fā)出后, 你就可以進(jìn)行其他操作了, 服務(wù)結(jié)束會(huì)產(chǎn)生相應(yīng)事件,
    然后由Command進(jìn)行后續(xù)處理, 最后引發(fā)頁(yè)面數(shù)據(jù)更新.



    主站蜘蛛池模板: 91福利视频免费观看| 亚洲AV无一区二区三区久久| 3344永久在线观看视频免费首页| 免费国产草莓视频在线观看黄| 亚洲最大黄色网站| 亚洲人成无码网站| 亚洲黄黄黄网站在线观看| 猫咪社区免费资源在线观看| 99久久人妻精品免费一区| 黄视频在线观看免费| 色视频在线观看免费| 亚洲夂夂婷婷色拍WW47| 亚洲理论在线观看| 亚洲av日韩av无码| 亚洲乱码国产乱码精品精| 亚洲一区二区三区在线播放| 国产精品极品美女免费观看| 成年人免费观看视频网站| 91手机看片国产永久免费| 久久亚洲免费视频| 日韩精品无码免费专区午夜| 久青草视频97国内免费影视| 一本久久免费视频| 一级毛片正片免费视频手机看| 国产成人精品日本亚洲语音 | 亚洲av永久无码| 国产精品亚洲四区在线观看| 亚洲国产午夜电影在线入口| 亚洲男女一区二区三区| 亚洲男人天堂影院| 亚洲美女人黄网成人女| 亚洲精品一卡2卡3卡三卡四卡| 亚洲网址在线观看你懂的| 久久久久亚洲AV无码麻豆| 久久水蜜桃亚洲av无码精品麻豆| 亚洲四虎永久在线播放| 91亚洲自偷手机在线观看| 亚洲国产美女精品久久久久| 91嫩草亚洲精品| 99999久久久久久亚洲| 色偷偷尼玛图亚洲综合|