IOC 是什麼?
所謂的Inversion Of Control(IOC), 指的是讓可能變動的程式流程或細節, 不寫死在程式之中, 而是在程式佈署(deploy)之後仍可動態地調整. 而在程式流程或細節都能被管理的情況下, 還可以進一步使用Aspect Oriented Programming(AOP)的概念去面向地(Aspect) 增加程式功能, 或是監控程式的運行.
建立與使用 Eva_IOC 應用程式.
Eva_IOC, 是以動態編譯完成IOC的功能, 它的使用流程如下 :
1. 在Java環境中, 透過工具所提供的AbstractFactory方法取得物件的建立工具, 用它建立自訂的物件.
2. 但在程式被執行前, Eva_IOC會先搜尋設定環境中是否存在替換該物件的設定檔, 若有, 則動態編譯該設定檔, 改傳回替換的物件, 若無, 則傳回原先指定的物件.
1. 在Java環境中, 透過工具所提供的AbstractFactory方法取得物件的建立工具, 用它建立自訂的物件.
2. 但在程式被執行前, Eva_IOC會先搜尋設定環境中是否存在替換該物件的設定檔, 若有, 則動態編譯該設定檔, 改傳回替換的物件, 若無, 則傳回原先指定的物件.
設定檔的搜尋.
Eva_IOC的設定檔, 即是一個Java程式碼檔, 只是為了區別, 其副檔名不強迫以 .java結尾. 而設定檔所容許的副檔名有哪些, 與該到執行目錄底下的哪個目錄搜尋, 都可以透過建立一個ResourceSetting物件自訂. 然後使用ObjectFactory內的setResource方法來設定. 預設的ResourceSetting物件裡, 內定會搜尋的設定檔副檔名為 :
1. 無副檔名,
2. ".java", ".conf" , ".config" , ".setting", ".eva".
而內定會去那搜尋設定檔的目錄為 :
1. 當前的程式執行目錄
2. "setting", "conf", "config", "eva".
若以Java中的Integer類別為例, 則
1. 無副檔名,
2. ".java", ".conf" , ".config" , ".setting", ".eva".
而內定會去那搜尋設定檔的目錄為 :
1. 當前的程式執行目錄
2. "setting", "conf", "config", "eva".
若以Java中的Integer類別為例, 則
- .\eva\java.lang.Integer.eva
- .\setting\java.lang.Integer.java
- .\eva\java\lang\Integer.setting
Eva_IOC 的優勢.
- 程式碼短, 設定檔小.
- 支援Java全部的功能.
- 可用compiler檢查設定是否正確, IDE的支援完整
- 可以只用Java的IDE重頭寫到尾了.
- 足以勝任關鍵任務的執行效率.
- 不必因為加入IOC特色, 而改變原本程式的寫法或架構, 唯一需要做的只是透過Eva_IOC去建立物件.
Eva_IOC 帶來的改變.
因為透由 Eva_IOC 即可將設定檔與程式本身直接做銜接, 並且一併帶來程式的擴充能力. 所以使用者更需要關注Java語言本身, .與Java SE功能本身, 這些絕不輕易改變的基礎知識, 是使用者所期望的設定檔中, 創意與設計的直接實踐工具.