涓. 浜嬩歡綆浠?
浜嬩歡鍙互鐢卞璁捐Е鍙? 姣斿:閿洏,榧犳爣, 涔熷彲鑳芥槸澶栭儴杈撳叆, 姣斿:web service鐨勮繑鍥? 浜嬩歡榪樿兘鐢辯粍浠剁殑澶栬鍜岀敓鍛藉懆鏈熷彂鐢熷彉鍖栨椂瑙﹀彂, 姣斿:緇勪歡鐨勫垱寤烘垨鑰呮敼鍙樺ぇ灝? 鎵鏈夌敤鎴蜂笌搴旂敤浜や簰閮戒細浜х敓浜嬩歡.鐢ㄦ埛娌℃湁鐩存帴涓庡簲鐢ㄤ氦浜掍篃鍙兘浜х敓浜嬩歡, 姣斿:鏁版嵁瑁呰澆瀹屾瘯. 浣犲彲浠ュ湪紼嬪簭涓嬌鐢ㄤ簨浠剁洃鍚櫒鐩戝惉榪欎簺浜嬩歡. 浜嬩歡鐩戝惉鍣ㄦ槸鍑芥暟鏂規硶鐢ㄤ簬鍝嶅簲鎸囧畾鐨勪簨浠? 鏈夋椂涔熺О涔嬩負浜嬩歡澶勭悊鍣? Flex鐨勪簨浠舵ā鍨嬪熀浜嶥OM3浜嬩歡妯″瀷. 緇勪歡浜х敓媧懼彂浜嬩歡騫舵秷璐?鐩戝惉)鍏朵粬浜嬩歡.濡傛灉涓涓璞℃兂瑕佷簡瑙e叾浠栧璞′簨浠剁殑淇℃伅, 鍙互娉ㄥ唽涓涓洃鍚櫒. 褰撲簨浠跺彂鐢熸椂,瀵硅薄媧懼彂姝や簨浠跺埌鎵鏈夋敞鍐岃繃鐨勭洃鍚櫒涓? 緇勪歡鏈塅lex鎻愪緵鐨勫唴寤轟簨浠? 涔熷彲浠ヤ嬌鐢ㄦ淳鍙?鐩戝惉妯″瀷瀹氫箟鑷繁鐨勪簨浠剁洃鍚櫒, 騫舵寚瀹氱洃鍚櫒鐩戝惉浣曠浜嬩歡. 浜? 浜嬩歡嫻佺畝浠? 褰撲竴涓簨浠惰媧懼彂鍑烘潵鏃? 浜嬩歡瀵硅薄浠庢牴鑺傜偣寮濮嬭嚜涓婅屼笅寮濮嬫壂鎻廳isplay list, 涓鐩村埌鐩爣瀵硅薄, 媯鏌ユ瘡涓妭鐐規槸鍚︽湁鐩稿簲鐨勭洃鍚櫒. 鐩爣瀵硅薄鎸囩殑鏄痙isplay list涓駭鐢熶簨浠剁殑瀵硅薄. 姣斿: <mx:Panel> <mx:HBox> <mx:VBox> <mx:Button /> </mx:VBox> </mx:HBox> </mx:Panel> 濡備綍姝ゆ椂 resize浜哣Box, 鍒欎細浠庢牴(Application)寮濮? 涓嬫潵媯鏌anel, HBox, 鐩村埌鐩爣瀵硅薄-浜х敓resize浜嬩歡鐨刅Box涓烘. 涓? 浜嬩歡鐨勬淳鍙? Flex涓彲浠ラ氳繃dispatchEvent()鏂規硶鎵嬪伐媧懼彂浜嬩歡, 鎵鏈塙IComponent鐨勫瓙綾婚兘鍙互璋冪敤姝ゆ柟娉? 璇硶: objectInstance.dispatchEvent(new Event("event_type"):Boolean 鍙傛暟event_type鏄疎vent瀵硅薄鐨則ype灞炴? 鍑芥暟鐨勮繑鍥炲兼繪槸True. 鍙互浣跨敤姝ゆ柟娉曟淳鍙戜換鎰忎簨浠? 鑰屼笉浠呬粎鏄敤鎴瘋嚜瀹氫箟浜嬩歡, 姣斿: 鍙互媧懼彂涓涓狟utton鐨凜lick浜嬩歡. var result:Boolean = buttonInstance.dispatchEvent(new Event(MouseEvent.CLICK)); 鍦‵lex搴旂敤涓笉鏄繀欏誨鏂版淳鍙戠殑浜嬩歡榪涜澶勭悊, 濡傛灉瑙﹀彂浜嗕竴涓簨浠? 鑰屾病鏈夊搴旂殑Listener鏃?Flex蹇界暐姝や簨浠? 濡傛灉鎯崇粰Event瀵硅薄娣誨姞鏂板睘鎬? 灝卞繀欏葷戶鎵縀vent綾?鐒跺悗瀹氫箟鏂板睘鎬? 鍥?浜嬩歡鐨勪紶鎾? 浜嬩歡瑙﹀彂鍚? Flex鏈?涓嫻嬩簨浠剁洃鍚櫒鐨勯樁孌? 3涓樁孌電殑鍙戠敓鐨勯『搴忓涓? 1. 鎹曡幏 2. 鐩爣 3. 涓婃誕 鍦ㄤ換鎰忎竴涓樁孌? 鑺傜偣浠兘鏈夋満浼氭搷浣滀簨浠? 姣斿: 鐢ㄦ埛鐐瑰嚮浜嗕竴涓湪VBox涓殑Button, 鍦ㄦ崟鑾烽樁孌? Flex媯鏌pplication瀵硅薄(鏍硅妭鐐?鍜孷Box鏄惁鏈夌洃鍚櫒澶勭悊姝や簨浠? Flex鐒跺悗鍦ㄧ洰鏍囬樁孌佃Е鍙戞寜閽殑鐩戝惉鍣? 鍦ㄤ笂嫻樁孌? VBox鍜屽簲鐢ㄤ互涓庢崟鑾烽樁孌電浉鍙嶇殑欏哄簭鍐嶆鑾峰緱鏈轟細澶勭悊浜嬩歡. 鍦ˋctionscript3.0涓?浣犲彲浠ュ湪浠繪剰鐩爣鑺傜偣涓婃敞鍐屼簨浠剁洃鍚櫒. 浣嗘槸閮ㄥ垎浜嬩歡浼氳鐩存帴浼犵粰鐩爣鑺傜偣,姣斿Socket綾? 鎹曡幏闃舵鐨勮妭鐐歸『搴忔槸浠庣埗鑺傜偣鍒板瓙鑺傜偣鐨? 鑰屼笂嫻樁孌靛垰濂界浉鍙? 鎹曡幏浜嬩歡緙虹渷鏄叧闂殑,涔熷氨鏄濡傛灉瑕佹崟鑾蜂簨浠? 蹇呴』鏄懼紡鎸囧畾鍦ㄦ崟鑾烽樁孌佃繘琛屽鐞? 姣忎竴涓狤vent閮芥湁target鍜宑urrentTarget灞炴? 甯姪璺熻釜浜嬩歡浼犳挱鐨勮繃紼? 鎹曡幏闃舵: 鍦ㄦ崟鑾烽樁孌?Flex鍦ㄦ樉紺哄垪琛ㄤ腑媯鏌ヤ簨浠剁殑紲栧厛鏄惁娉ㄥ唽浜嗕簨浠剁殑鐩戝惉鍣? Flex浠庢牴鑺傜偣寮濮嬮『搴忚屼笅. 澶у鏁版儏鍐典腑, 鏍硅妭鐐規槸Application瀵硅薄. 鍚屾椂, Flex鏀瑰彉浜嬩歡鐨刢urrentTarget鍊? 緙虹渷鎯呭喌涓? 鍦ㄦ闃舵,娌℃湁瀹瑰櫒鐩戝惉浜嬩歡. use_capture鍙傛暟鐨勫兼槸False,鍦ㄦ闃舵娣誨姞鐩戝惉鐨勫敮涓鏂規硶鏄湪璋冪敤add_listener鏃? 浼犲叆涓涓負True鍊肩殑use_capture鍙傛暟, 姣斿: myAccordion.addEventListener(MouseEvent.MOUSE_DOWN, customLogEvent, true); 濡傛灉鏄湪Mxml涓坊鍔犵洃鍚? Flex璁劇疆姝ゅ弬鏁頒負False, 娌℃湁鍔炴硶榪涜淇敼. 濡傛灉璁劇疆浜唘se_capture涓篢rue, 閭d箞浜嬩歡灝嗕笉浼氫笂嫻? 濡傛灉鏃㈡兂鎹曡幏鍙堟兂涓婃誕灝卞繀欏昏皟鐢?addEventListener涓ゆ. 涓嬈se_capture鍙傛暟涓簍rue, 涓嬈′負false; 鎹曡幏寰堝皯浣跨敤, 涓婃誕鐨勪嬌鐢ㄦ洿涓烘櫘閬? 鐩爣闃舵: 鍦ㄧ洰鏍囬樁孌? Flex嬋鍙戜簨浠剁殑鐩戝惉紼嬪簭, 涓嶆鏌ュ叾浠栫殑鑺傜偣. 涓婃誕闃舵: 浜嬩歡鍙湪bubbles灞炴т負True鏃舵墠榪涜涓婃誕. 鍙互涓婃誕鐨勪簨浠跺寘鎷? change, click, doubleClick, keyDown, keyUp, mouseDown, mouseUp. 鍦ㄤ笂嫻樁孌? Flex鏀瑰彉浜嬩歡鐨刢urrentTarget灞炴? 鑰宼arget灞炴ф槸鍒濆媧懼彂浜嬩歡鐨勫璞? 鏌ヨ浜嬩歡闃舵: 浣跨敤浜嬩歡鐨別ventPhase鍙互鑾峰緱浜嬩歡褰撳墠鐨勯樁孌? 1: CAPTURE_PHASE 2: AT_TARGET 3: BUBBLING_PHASE 紺轟緥: private function determineState(event:MouseEvent):Void { Debug.trace(event.eventPhase + ":" + event.currentTarget.id); } 鍋滄浼犳挱: 浣跨敤涓嬮潰涓や釜鍑芥暟鍋滄浜嬩歡鐨勪紶鎾? stopPropagation() stopImmediatePropagation() |
鎴戞槸涓涓狫AVA EE寮鍙戜漢鍛橈紝浠庝笟宸茬粡鏈夎繎涓冦佸叓騫寸殑鏃墮棿浜嗐傚JavaEE鐨勪紒涓氱敤鎴峰紑鍙戞妧鏈鏋舵柟闈㈢殑姣旇緝鐔熸倝銆傚Spring錛孲truts錛學ebwork錛孒ibernate絳夋祦琛岀殑寮婧愭鏋朵篃涓鐩村湪宸ヤ綔涓嬌鐢ㄣ?/p>
鍦ㄧ幇鍦ㄧ殑MVC妗嗘灦涓紝鎴戞瘮杈冨懼悜浜庨噰鐢╓ebWork錛岀伒媧昏交宸truts2鍏跺疄璐ㄥ氨鏄WebWork2鐨勪竴嬈″崌綰э紝榪欎篃璇存槑浜哤ebWork鐩稿涓嶴truts1鐨勪紭鍔挎墍鍦ㄣ傚湪鐜板湪鐨凴IA寮鍙戞垚涓鴻秼鍔夸箣鍚庯紝鍦ㄥ伐浣滀腑涔熶嬌鐢ㄤ簡DWR鍋欰jax鏈嶅姟鍣ㄧ鐨勬暟鎹鐞嗭紝騫墮噰鐢╦s template鐨勮剼鏈鐞嗛〉闈㈡樉紺烘暟鎹紝鍏朵腑鏈澶х殑鐥涜嫤灝辨槸璋冭瘯JavaScript錛屽敖綆℃垜浠嬌鐢ㄤ簡firefox鐨勬彃浠惰皟璇昷avascrpt銆?/p>
姝e鈥?a title="ria" target="_blank">JAVA紼嬪簭鍛樺綋濡備綍閫夋嫨RIA寮鍙戠幆澧?/a>鈥濇墍鎻愬埌ajax鐨勭殑鍏堝ぉ緙洪櫡錛屽茍涓嶉傚悎RIA鐨勫叏搴旂敤寮鍙戯紝濡傛灉鍙槸鍦ㄩ〉闈腑鐨勫眬閮ㄤ嬌鐢ㄦ槸鏈変竴浜涗紭鍔匡紝鏍規嵁鍏蜂綋鎯呭喌閫夋嫨鏈鍚堥傜殑銆?/p>
鍦‵lex鐨勫簲鐢ㄧ▼搴忓紑鍙戝綋涓紝瀛︿範浜嗗緢瀵硅寖渚嬶紝鍩烘湰涓婃祻瑙堜簡涓閬岶lex鐨勫府鍔╂枃妗o紝騫惰嚜宸卞仛浜嗕簺灝忕▼搴忋?/p>
鍏朵腑閬囧埌鏈澶х殑鍥伴毦涓嶆槸鍦ㄧ▼搴忚皟璇曟柟闈紝鑰屼笖紼嬪簭綆$悊鏂歸潰鐨勶紝浠g爜娣蜂貢錛岄毦浠ユ帶鍒訛紝灝ゅ叾鍦ㄥ浜哄紑鍙戠殑鏃跺欙紝鏇村姞瀹規槗鍑虹幇榪欐牱鐨勬儏鍐點傝繖鏍風殑鎯呭喌涓婻IA鐨勫紑鍙戞槸鐥涜嫤鐨勶紝涓嶉傚疁鐨勩?/p>
Cairngorm寮鍙戞鏋惰鐧戒簡灝辨槸涓涓狥LEX搴旂敤寮鍙戠殑MVC妗嗘灦錛堣嚜宸辯殑鎰熻錛夈傚皢Model錛寁iew錛孋ontrol鐙珛鍒嗗紑錛屾竻鏅版槑浜嗐?br />
浠涔堟槸Cairngorm錛?b style="COLOR: black; BACKGROUND-COLOR: #ffff66">Cairngorm鏄竴涓氳繃閫昏緫鍔熻兘銆佹暟鎹佺敤鎴瘋鍥懼拰浠g爜鎺у埗鐨勪換浣曚簨鎯呮潵鍒掑垎浣犵殑搴旂敤紼嬪簭浠g爜鐨勫熀紜鏂規硶璁猴紝鍙互鍙仛MVC錛圡odel-View-Control錛夌殑涓縐嶅疄璺墊柟寮忋?/p>
Cairngorm鐨勫垝鍒?/strong>
View錛堢晫闈級錛?/strong>閫氳繃涓涓垨鑰呭涓狥lex緇勪歡錛堟寜閽侀潰鏉褲佺粍鍚堟銆乀ile絳夌瓑錛夌粍鍚堝湪涓璧風殑涓涓釜鍛藉悕鍗曞厓錛岀粦瀹氭暟鎹湪Model Locator錛堟ā鍨嬪畾浣嶅櫒錛変腑錛屽茍涓斾駭鐢熷熀浜庣敤鎴鋒搷浣滐紙鐐瑰嚮銆佹粴鍔ㄣ佹嫋鎷界瓑錛夌殑鑷畾涔夌殑Cairngorm浜嬩歡銆?/p>
Front Controller錛堝墠绔帶鍒跺櫒錛夛細鎺ユ敹Cairngorm浜嬩歡騫舵槧灝勪粬浠埌Cairngorm鍛戒護鎺у埗鍣ㄤ笂銆?/p>
Command錛堝懡浠ゆ帶鍒跺櫒錛夛細澶勭悊鍟嗕笟閫昏緫錛岃皟鐢–aringorm浠g悊鍜岋紙鎴栵級鍏跺畠鍛戒護銆?/p>
Delegate錛堜唬鐞嗭級錛?/strong>鐢卞懡浠ゅ垱寤猴紝瀹炰緥鍖栬繙紼嬭繃紼嬭皟鐢紙HTTP銆乄eb Service絳夌瓑錛夊茍涓斿鐞嗗懡浠ょ殑榪斿洖緇撴灉鏁版嵁銆?/p>
Service錛堟湇鍔★級錛?/strong>瀹氫箟榪炴帴榪滅▼鏁版嵁瀛樺偍鐨勮繙紼嬭繃紼嬭皟鐢紙HTTP銆乄eb Service絳夌瓑錛夈?br />
Cairngorm
鏄疘teration::two鐨勫紑婧愰」鐩? 鏄嬌鐢╩acromedia Flex鐨凴IA寮鍙戠殑鏈浣?br />瀹炶返(best-practice)妗嗘灦.
鎴戜滑浠嶤ontrol璇磋搗:
EventBroadcaster鏄竴涓崟渚嬬被(singleton), 鐢ㄤ簬騫挎挱鐢ㄦ埛鍔ㄤ綔瀵瑰簲鐨勪簨浠? 浣跨敤
FrontController紼嶅井澶嶆潅涓鐐圭偣. 鐢ㄤ簬灝嗙壒瀹氱殑鐢ㄦ埛鍔ㄤ綔鍒嗗彂鍒版寚瀹氱殑鍛戒護綾?
http://labs.adobe.com/wiki/index.php/Cairngorm
Model Locator錛堟ā鍨嬪畾浣嶅櫒錛夛細瀛樺偍浣犵殑搴旂敤涓墍鏈夌殑Value Objects錛堟暟鎹級鍜屽叡浜彉閲忓湪涓涓綅緗傚拰Http鐨凷ession瀵硅薄綾諱技錛屽彧鏄畠瀛樺偍鍦‵lex鎺ュ彛鐨勫鎴風鑰屼笉鏄湪涓棿浠跺簲鐢ㄦ湇鍔″櫒鐨勬湇鍔″櫒绔?/p>
鏈夊叧Cairngorm鐨勮祫鏂欙細/P>
鍦?b style="COLOR: black; BACKGROUND-COLOR: #ffff66">Cairngorm鍩虹涓婂紑鍙慠IA, 灝嗕細鍦↖teration::two鐨勪笓瀹朵綋緋誨拰鐜版湁鐨勭伒媧誨彲緇?br />鎶や紒涓氳В鍐蟲柟妗堜腑杈懼埌騫寵 .
Cairngorm鏈韓騫朵笉鏄竴涓畬鏁寸殑浼佷笟搴旂敤, 瀹冨彧鏄彁渚涗簡涓涓紑鍙戠殑楠ㄦ灦, Iteration::two縐?br />涔嬩負浣撶郴.
鍦ㄨ繖涓綋緋諱腑鍖呮嫭浠ヤ笅鍑犱釜閮ㄥ垎:
1. Business(涓氬姟閫昏緫閮ㄥ垎)
2. Command(鍛戒護閮ㄥ垎)
3. Control(鎺у埗閮ㄥ垎)
4. Model(鏁版嵁妯″瀷)
5. View(鐣岄潰瑙嗗浘)
6. VO(ValueObject)
鍦–ontrol涓? 瀹氫箟浜?涓熀綾? Event, EventBroadcaster, FrontController.
Event鐢ㄤ簬鍦ㄥ簲鐢ㄤ笉鍚岀殑灞備箣闂翠紶閫掍簨浠? 騫舵惡甯︿簨浠剁殑鏁版嵁. 鍖呭惈type鍜宒ata涓や釜
鎴愬憳.
type瀛樻斁涓涓尯鍒笉鍚屼簨浠剁殑鍚嶇О,灝嗕細鍦‵rontController涓繘琛屾敞鍐?
鑰屽湪鍛戒護(Command)綾諱腑, 浼氬浜嬩歡榪涜鍝嶅簲.
鏂規硶: EventBroadcaster.getInstance().broadcastEvent( ... )
FrontConroller鏄姹傚鐞嗙殑鏍稿績綾? 鏁翠釜浣撶郴涓亶甯冪殑EventBroadcaster.getInstance(
).broadcastEvent( ... )榪欐牱鐨勮皟鐢?
閮芥槸鐢ㄦ潵閫氱煡鐩戝惉鎺у埗鍣? 鐢ㄦ埛鍙戝嚭浜嗚姹? 鍦ㄥ疄闄呭簲鐢ㄤ腑, 寮鍙戣呭簲璇ョ敓鎴愪竴涓?br />FrontContoller鐨勫瓙綾?
騫跺湪鏋勯犲嚱鏁頒腑璋冪敤addCommand()娉ㄥ唽棰勬湡浜嬩歡鐨勫鐞嗗懡浠? FrontController鐨勫叿
浣撳疄鐜扮被搴旇鍒涘緩涓嬈¤屼笖鍙兘鍒涘緩涓嬈?