成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Hook機制與Flex的界面組合SDK

開發 后端
本文介紹了Flex界面組合SDK中使用Hook機制的方法。Hook即鉤子,其作用可以理解為通過透明的方式為某一對象掛上額外的功能,從而實現透明擴展。

下面介紹的是Flex中的Hook機制。這個Hook機制本身不限平臺和語言,而Flex中的Hook機制是相當不錯的。

在前一篇簡要介紹了基于Flex的界面組合SDK,其中使用Hook機制實現UI Part生命周期管理、Master-Details關系構建和UI Part注入。Hook即鉤子,其作用可以理解為通過透明的方式為某一對象掛上額外的功能,從而實現透明擴展。Hook機制可以應用于各種平臺,不限語言,其傳遞的是一種思想。利用Hook機制實現這些功能的***優點是,在提供這些功能的同時不增加用戶復雜性,它能夠完全兼容基于Flex組件的設計,使用戶絲毫感覺不出來我們正在使用SDK。也就是說,這種Hook機制的引入,該SDK提供的功能對開發人員是完全透明的,這個想法很酷。不過,沒有任何解決方案是***的,這種Hook機制在資源釋放、事件捕捉時,需要按一定順序,控制這些順序對SDK維護人員要求比較高,一不注意,就會出現莫名其妙的錯誤。此外,Hook機制實現稍微困難一點。

下圖是Hook機制實現類圖。

Hook機制實現類圖 

IDisposable接口借鑒與微軟內存管理模型,Adobe Flex在內存管理和GC方面做得非常粗糙,其SDK內存泄漏很多,在模塊化應用中,內存泄漏尤其嚴重。因此,我在設計該SDK的時候,引入了微軟的一些 內存管理思路,不過,根據需要做了一點變化。該SDK內存釋放分為2個階段,***個階段有preDispose函數實現,用于釋放類實例間依賴,第二階段 是postDispose函數實現,用于釋放實例引用。所有的Hook都實現了IDisposable接口,可以實現內存釋放。

IComponentHook 繼承于IDisposable接口,定義了一個Hook的基本接口,由compositionManager、component、isHooked屬性 和hook、unHook方法組成,分別用于表示組合管理器、Hook掛載的組件、是否掛載和執行掛載、執行卸載。

ComponentHook是所有Hook基類,它直接實現了compositionManager、component、isHooked屬性的定義,并且在hook方法和unHook方法中設置了掛載的組件和isHooked屬性。

生命周期管理功能由IComponentLifecycleHook、IContainerLifecycleHook接口與 ComponentLifecycleHook、ContainerLifecycleHook、ViewStackLifecycleHook實現類組成。ComponentLifecycleHook用于保存一個葉子控件的生命周期狀態,葉子控件的生命周期是由其容器決定的;ContainerLifecycleHook用于保存容器的生命周期狀態,同時用于管理子控件的狀態,默認的,所有的子控件都與容器的狀態是一致;ViewStack是一個特殊的容器,在任一時刻,它只顯示一個子控件,ViewStackLifecycleHook用于保存ViewStack容器的狀態,并管理當前顯示的控件的狀態,當ViewStack狀態更改時,只更改當前被選中的子控件,而其它子控件都處于非激活狀態。

SmartPartPlaceHolderHook和SmartPartContainerHook實現UI Part動態注入(在SDK中,每一個UI Part被命名為SmartPart,命名方式來源于微軟CAB)。這兩個Hook會為實現ISmartPartPlaceHolder和ISmartPartContainer接口的容器,從這類容器讀取location屬性,然后根據location屬性從SmartPartManager獲取相應的SmartPart,然后注入到這些容器中。SmartPartPlaceHolder與SmartPartContainer區別是,前者只能注入一個SmartPart,而后者可以注入多個SmartPart。

DetailsSmartPartHook實現Master-Details關系構建,為一個實現IDetailsSmartPart接口的組件添加其masterSmartPartLocations對應的MasterSmartPart,建立二者之間的關系,這種關系的建立對于用于是透明的。

ComponentTreeHook是Hook機制核心類,掛載到控件樹的根節點,動態監聽整個控件樹onChildAdded/Removed事件,實現整個控件樹的所有Hook的創建和銷毀;DebugComponentTreeHook繼承于ComponentTreeHook,與其區別在于它是實現整個控件樹調試信息的收集,其收集的調試信息能夠自動顯示到如下的DebugPanel。

DebugPanel 

【編輯推薦】

責任編輯:yangsai 來源: 博客園
相關推薦

2009-09-16 10:53:50

Flex界面

2010-07-29 10:33:59

Flex鍵盤事件

2010-03-22 17:20:09

Flex

2010-08-06 09:45:50

Flex事件機制

2010-08-12 15:35:44

Flex事件機制

2010-08-13 14:19:44

Flex綁定機制

2010-08-06 10:15:35

Flex綁定

2010-08-04 13:52:53

Flex事件機制

2017-01-12 15:42:53

HookPythonImport

2010-08-03 08:41:46

Flex4SDK配置

2009-08-27 11:55:33

ibmdwPHP

2011-11-15 08:59:27

Adobe

2010-08-06 10:03:42

Flex事件

2010-08-04 14:07:59

Flex事件機制

2010-08-11 15:11:52

Flex組合框

2010-08-13 11:21:31

Flex渲染器

2010-07-27 15:36:15

Flex swf

2011-08-17 09:14:03

FlexJava

2010-08-04 14:02:08

Flex事件機制

2010-08-13 13:56:02

Flex事件機制
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久婷婷国产 | 亚洲一区二区三区四区五区中文 | 日韩免费看片 | 欧美一级黄色免费看 | 欧美一级在线观看 | 欧美全黄 | 国产成人精品网站 | 日本在线播放一区二区 | 国产精品视频网 | 精品久久久久久亚洲综合网站 | 久久视频免费观看 | 亚洲精品一区二三区不卡 | av在线成人 | 免费国产一区二区 | 黄色片免费在线观看 | 国产真实乱全部视频 | 日韩aⅴ在线观看 | 日韩一区在线观看视频 | 亚洲欧美在线免费观看 | 一区二区三区在线播放视频 | 荷兰欧美一级毛片 | 特一级毛片 | 在线一区视频 | 国产精品亚洲一区二区三区在线 | 国产亚洲精品久久午夜玫瑰园 | 国产精品观看 | 国产成人99久久亚洲综合精品 | 自拍偷拍中文字幕 | 国产成人精品a视频一区www | xxx视频| 国产精品久久久久久久久免费相片 | 国产精品视频免费观看 | 日本精品视频 | 亚洲综合资源 | 午夜精品久久久久久久久久久久久 | 日韩在线一区二区 | 精品久久99 | av中文在线| 国产精品高清在线 | 国产精品久久久久久久久久久新郎 | 99爱视频|