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

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

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

    Duran's technical life
    踏踏實實學技術,認認真真做研究。

    iteration::two Cairngorm 0.99 開發(fā)指南
    @author sakis
    @version 0.1

    #0
    MXML優(yōu)點:使用方便,XML代碼簡潔易懂
    缺點:事件、函數、界面描混在一起。程序規(guī)模大了難于開發(fā)維護。

    #1
    Cairngorm框架是iterationtwo推出的號稱基于JEE Best Practice的Flex程序開發(fā)的light-weight framework。(恩,light-weight這個詞還真是流行呢)。目前最新版本為0.99。

    Cairngorm的結構如下:
    org
    └─nevis
        └─cairngorm
            ├─application
            │      CairngormApplication.as
            │
            ├─business
            │      Responder.as
            │      ServiceLocator.as
            │
            ├─commands
            │      Command.as
            │      SequenceCommand.as
            │
            ├─control
            │      Event.as
            │      EventBroadcaster.as
            │      FrontController.as
            │
            ├─model
            │      ModelLocator.as
            │
            ├─view
            │      ViewHelper.as
            │      ViewLocator.as
            │
            └─vo
                    ValueObject.as


    #2
    下面給大家簡單介紹Cairngorm的實現思路。

    #2.1
    Command/FrontController將Event與Viwe分離。
    FrontController實現Singleton模式(以下簡寫為SP)。所有自定義的Command在要在FrontController構造函數中實例化并以關聯數組的方式注冊FrontController#addCommand(eventType:String, commandInstance:Command)。EventBroadcaster實現SP。Event類的結構為{type:eventType, data:eventData}。我們通過EventBroadcaster#broadcastEvent(eventType:String, eventData:Object)發(fā)布Event。Event發(fā)布后,與eventType對應的command instance執(zhí)行Command#execute(event:Event)。

    BTW:在Cairngorm的源碼中,eventType、commandName、eventName混用,我統一用eventType。

    #2.2
    ServiceLocator將Remote Service聲明與View分離。
    ServiceLocator實現SP。在Cairngorm的demo中,又通過Delegate對象解除Command/Responder和ServiceLocator之間的依賴。這個Delegate做的事情其實意義不大,就是調用ServiceLocator中的Method,設置莫個Responder為相應遠程方法的handler。個人覺得無謂地增加了代碼量,而且Delegate對象也沒實現SP,也就是說我們每次調用一次Remote Service中的Method,都要new一個Delegate對象,實在浪費。

    #2.3
    ViewLocator/ViewHelper將View(MXML)中夾雜的function與View分離。
    ViewHelper有點意思,當一個ViewHelper在某個MXML頁面中聲明時,如<view:LoginViewHelper id="loginViewHelper" />。ViewHelper能自動取得所在MXML對象的引用,并通過ViewLocator#register(id, this:ViewHelper)將自身注冊到ViewLocator中。ViewLocator實現SP。借助ViewLocator/ViewHelper,我們就可以方便的調用不同MXML頁面中的方法。

    #2.4
    ModelLocator是一個marker interface,程序中Model可以放在某個ModelLocator方便調用。

    #2.5
    ValueObject也是一個marker interface, 基本不需要。

    #3
    Cairngorm.99給我們開發(fā)Flex程序提供了很不錯的架構模式,M/V/C/Remote之間可以做到完全解構。但在實際開發(fā)時沒有必要死扣,代碼結構清晰有活力就好。

    posted on 2005-09-07 21:49 Duran's technical life 閱讀(883) 評論(0)  編輯  收藏 所屬分類: 技術積累
     
    主站蜘蛛池模板: 亚洲电影中文字幕| 亚洲综合网美国十次| 亚洲av无码av在线播放| av无码国产在线看免费网站| 亚洲福利视频网站| 色se01短视频永久免费| 亚洲妇女熟BBW| 国产无遮挡吃胸膜奶免费看| 国产成人精品亚洲| 国产黄色一级毛片亚洲黄片大全| 边摸边脱吃奶边高潮视频免费 | 亚洲欧美自偷自拍另类视| 永久免费av无码不卡在线观看| 91亚洲精品自在在线观看| 免费人成网站在线观看10分钟| 亚洲中文字幕久久精品蜜桃| 日本免费网站观看| 中文字幕版免费电影网站| 青青草原精品国产亚洲av| 人禽杂交18禁网站免费| WWW亚洲色大成网络.COM| 日韩精品亚洲aⅴ在线影院| 久久99精品视免费看| 亚洲一卡2卡3卡4卡乱码 在线| 国产免费久久精品| 中文字幕在线免费播放| 亚洲成年人电影网站| 日本高清免费中文字幕不卡| 亚洲免费一区二区| 亚洲免费福利视频| 一级毛片直播亚洲| 久久免费观看国产精品88av| 亚洲中文字幕无码爆乳app| 久久影视国产亚洲| 性短视频在线观看免费不卡流畅 | 亚洲av无码成人精品国产 | 亚洲色偷偷偷综合网| 最新亚洲成av人免费看| 日韩版码免费福利视频| 国产黄色片免费看| 精品国产成人亚洲午夜福利|