-----------反射空間程式設計-------------
1.space(已建立的空間)} ;動作-}
}2.屬性
3.子集
4.反射集
}//優化反射集合:應當也必須有乙個或者多個space對反射集進行優化管理
//反射訓練:根據具有反射集管理功能的space進行選擇性訓練。
5.狀態(1就緒,2啟用,3被啟用(不觸發該space的反射集),4活動,5疲憊,6休眠,7守護)
<---上述所有的項本質都是屬性的一部分?也就是說所有新建立的space都應當是描述,子集,反射集,狀態等基本屬性的space的擴充套件--->
}2.space的概念:
space是乙個被命名狀態空間,它可以描述任何事物,同時也存在自身的狀態,
它包含乙個實時更新的子集,這個子集是它的拓展,當這個空間被激
活(通常是外界訪問)時,它將產生反射行為,反射行為根據其自身決
定。反射行為可能會啟用任意的space;其自身的屬性可能被它的superspace解
析(這通常取決於屬性所對映的space,如果其對映的space不是它的superspace,
那麼,他將被加入superspace的擴充套件子集)。
3.初始的space:
初始space是描述其自身的space,預設反射行為是檢查自身狀態(屬性),
其初始子集是構成自身元件的集合,描述是自身的名字;
4.superspace的建立:
當兩個或以上space的屬性被確認相同的時候,不可避免地誕生了乙個superspace,
superspace的屬性是此共同屬性;同時,部分屬性被確認與乙個已知space中一項屬性完全相同的時候,
此space將成為這個superspace的子集成員;
5.例子:
我要使用word文件打列印乙個word的檔案space;
1.此檔案space啟用時,對應的解碼space(中間關聯呼叫的space)已啟用(通常反射啟用);
解碼space將通過反射行為掃瞄其space下的子集,並將已啟用的文件space解碼;解讀後的資料
將在print的佇列中(或者有乙個時間事件佇列);啟用印表機掃瞄一次,列印最新資料;
結論:space中,反射是一種主動行為,它會將所有的相關的space聯合啟用,具有某些特定反射功能的space將會發生特定的動作。
如同印表機一樣,如果有乙個space聯合啟動了印表機,那麼,在列印佇列中的檔案將被列印。同時需要注意的是如果掃瞄行為不關閉
已掃瞄的space,那麼,對應的space將會被無限制地掃瞄到;可能會產生無限迴圈的列印行為;最好的做法可能是僅僅掃瞄一次,
如果需要,再設定全域性掃瞄和迴圈掃瞄。
6.頂層掃瞄:
當進行space搜尋的時候,優先搜尋子集較少的屬性。如果此屬性是本次搜尋中與目標最切合的屬性;
將會根據此屬性深入搜尋目標
7.等值比較:
如果兩個space屬性描述中均有一項是直接指向乙個space,即可證明其相等;
8.守護反射:
守護狀態的space處於啟用狀態,但是其屬性不能作為任何資源使用。
9.如何建立space:
使用乙個元space來建立space,當此space屬性被啟用,將建立乙個空的space
10.如何管理space:
使用乙個元space來管理space,此space可以操作其他任意已建立的space
----------------所有反射空間都應當遵循space規則慎用反射機制------------------------------
螢幕空間反射
螢幕空間反射 scene space reflection,ssr 又叫實時區域性反射 realtime local reflection,rlr 最早見於2011年crytek在siggraph的course secrets of cryengine 3 graphics technology 傳...
Go反射程式設計
reflect.typeof vs.reflect.valueof func checktype v inte ce func testbasictype t testing.t 利用反射編寫靈活的 type employee struct func e employee updateage new...
C 反射程式設計
一 獲取屬性集 typeof type getproperties bindingflags.public bindingflags.instance tolist 二 關於屬性型別的判斷 1 基礎型別可以直接取值和賦值 2 陣列型別 property.propertytype.isarray tr...