Интересный вопрос!Есть, однако, несколько вопросов в одном.Позвольте мне ответить на каждый из них в отдельности.
Позвольте мне сначала изложить определение типа значения , найденное на domaindrivendesign.org
Определение: Объект-значение - это объект, который описывает некоторую характеристику или атрибут, но не имеет понятия идентичности.
Например, путь к файлу является строкой, но он также имеет некоторое значение ограничения на формат строки и некоторые операции .Здесь было бы неплохо создать объект значения.Также обратите внимание, что путь не содержит обозначений identity .Таким образом, два объекта пути, представляющие один и тот же путь, будут считаться равными.
Теперь вернемся к актуальному вопросу, я настоятельно рекомендую ваш способ кодирования - создание класса для данных, которые принадлежат друг другу.В первом примере id
и title
связаны индексом только в двух отдельных списках.
Лучше использовать эту форму
Form tempForm = new Form(id, title);
Таким образом, класс Form
может быть неизменным , что обеспечит вам большую читабельность, а также прирост производительности.Также поля класса инкапсулированы.
Теперь до последней вещи, которая показалась вам странной - наличие двух методов, одного для создания списка и одного для запроса к нему.
Здесь я хотел бына самом деле создайте новый класс, содержащий только эти два метода вместо того, чтобы они говорили в статическом классе.Я бы назвал это FormCollection
.Вы, ребята, можете придумать более умное имя, так как у вас больше контекста.Потратьте не более пяти минут на то, чтобы найти осмысленное имя.
Вы также можете провести дальнейший рефакторинг своего кода, например, чтобы указать путь к файлу или потоку xml в качестве аргумента конструктора, а затем использовать один метод для запроса его в id,Вот так:
class FormCollection
{
public FormCollection(String xmlFilePath) { ... }
public Form getById(int id) { ... }
}
Это, вероятно, хороший интерфейс для остальной части вашего приложения, поскольку он прост и понятен.Также это легко проверить.