Мне нужно реализовать инструмент, который читает файл конфигурации и запускает приложения / программы, указанные в файле конфигурации.Этакий автоматизированный бегун для тестов.Я реализовал программу, которая делает это, однако я попал в стену зависимости.В моем текущем инструменте разработки анализирует файл конфигурации и получает карту типа программы и список заданий.Основанный на ProgramType, класс Runner выбирается и инициализируется, класс Runner является частью программы src.
//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. *;для создания ProgramType мне нужны org.Tool.Job и org.Tool.JobStats.«Ад зависимости», который я создал, очевидно, очень плохой дизайн.Я пришел с решением простого вызова jar-файла ProgramType и сохранения JobStats в файле jobStats.txt, а после завершения выполнения jar-файла прочитайте файл и обработайте его.Это решение неприемлемо, так как задания могут запускаться несколько раз со многими конфигурациями и т. Д., Просто для обработки большого количества * .txt файлов.Я думаю, что когда-то видел решение для компиляции для моей проблемы, что-то вроде инструмента «частичной компиляции», компиляции ProgramType, инструмента перекомпиляции.Однако я не могу найти его, также было бы разумно избавиться от анти-паттерна "ад зависимости".Таким образом, мой вопрос «Как я должен был спроектировать это».
(я надеюсь, что объяснение понятно, если не просто спросить)
решено
Как я писал вcomment @aviad Я искал шаблон дизайна, чтобы решить мою проблему.Я нашел один, который называется «Принцип инверсии зависимости».Здесь я даю ссылку на документ в формате PDF, описывающий шаблон, который стоит прочитать (http://www.objectmentor.com/resources/articles/dip.pdf) (Еще одно хорошее объяснение http://java.dzone.com/articles/fun-modules). Спасибо всем за вашу помощь (мне очень понравились рамки, которые вы рекомендовали).