我必須實現一個讀取配置文件並運行配置文件中指定的應用程序的工具。一種用於測試的自動化跑步者。我已經實現了一個這樣做的程序,但是我已經打開了依賴牆。在我目前的設計工具中解析配置文件並檢索ProgramType和作業列表的Map。基於ProgramType,Runner類被選擇並初始化,runner類是Program src的一部分。運行java MainClasses的工具,避免依賴關係的設計陷阱
//this is just a pseudo code
pkg org.Tool
class Tool {
//after parsing
runJobs(map) {
if(map.get() == ProgramType)
org.Tool.JobStats = org.ProgramType.Runner.run(Job)
}
}
pkg org.ProgramType
class Runner {
org.Tool.JobStats run(Job) {
if(Job = "certain job")
return CertainJob.run(Job)
}
}
要建立我需要編譯org.ProgramType工具*。構建我需要org.Tool.Job和org.Tool.JobStats的ProgramType。我創建的「依賴地獄」顯然是非常糟糕的設計。我提供了一個簡單地調用ProgramType jar並將JobStats存儲在jobStats.txt文件中的解決方案,一旦jar執行完成,讀取文件並對其進行處理。這個解決方案是不可接受的,因爲喬布斯可以使用多種配置運行多次,只需要很多* .txt文件來處理。我想我曾經爲我的問題看過一次編譯解決方案,比如「部分編譯」工具,編譯ProgramType,重新編譯工具。但是我無法找到它,擺脫「依賴地獄」反模式也是明智之舉。因此我的問題是「我應該如何設計這個」。
(我希望解釋清楚,如果不是隻問)
解決
正如我在評論中寫道我@aviad一直在尋找一個設計模式,以解決我的問題。我發現了一個它所謂的「依賴倒置原則」。在這裏我鏈接一個描述該模式的pdf文檔,其值得閱讀(http://www.objectmentor.com/resources/articles/dip.pdf)(另一個很好的解釋http://java.dzone.com/articles/fun-modules)。謝謝大家的幫助(我真的很喜歡你推薦的框架)。
您是否在談論依賴注入?如果是這樣,請在這裏查看Guice http://code.google.com/p/google-guice/ – tartak 2012-02-16 11:18:51
我應該如何設計它?簡短的回答:像maven;甚至更短:反射 – 2012-02-16 11:21:11
Catalin Thx的提示我會研究它。 @guido是不是反映錯誤容易和難以維護? – alien01 2012-02-16 11:39:21