Yikes.
Один из вариантов - просто использовать Map или аналогичный держатель свойств.
Другой вариант: использовать серию вложенных классов, чтобы добавить организацию (например, Order.Person.ContactInfo.Address.ZipCode, а не просто Order.ZipCode). Я не уверен, что мне это нравится, поскольку это означает дополнительную сложность, но без этого поиск нужного геттера/сеттера (например, с помощью автозаполнения в IDE) превращается в кошмар.
Еще один вариант: если вы создаете один класс с большим количеством свойств, рассмотрите возможность использования шаблона "конструктора выражений", в котором каждый "сеттер" возвращает сам объект, позволяя вам объединять сеттеры в цепочки:
myObject.setPropertyA("Foo").setPropertyB("Bar").setPropertyC("Baz")...
что может создать более быстрый и беглый интерфейс
myObject.setPropertyA("Foo");
myObject.setPropertyB("Bar");
myObject.setPropertyC("Baz");
...
Возможно, обернуть методы API с громоздким количеством параметров и применить Introduce Parameter Object рефакторинг повторно, группируя логически связанные параметры в объекты параметров, особенно если результаты отображаются на существующие объекты модели, к которым можно применить adaptor pattern.
Я бы серьезно подумал об использовании двух хэш-таблиц, если максимальная производительность не является критерием убийства.
Можете ли вы использовать java.util.Map вместо класса с сеттерами / получателями?
Сторонний API должен объявить какой-то тип/класс для обработки выходных данных, верно? Если предположить, что этот API - класс Java, то очевидно, что они должны возвращать единственный объект Output
из своего метода.
Если это так, то для взаимодействия с этим API я бы создал объект-обертку, который
Таким образом, остальная часть вашей программы должна знать о существовании только тех полей, о которых ей нужно знать, а остальные поля (и сами сторонние объекты) полностью скрыты/абстрагированы.
Вау, много полей. Несмотря на это ...
Как API взаимодействует с этим классом? Если он обеспечивает реализацию требуемой структуры классов, вам обязательно стоит пойти на это.
Как насчет генерации кода? Создайте файл с входными параметрами, а другой - с выходными параметрами. Затем создайте любые шаблоны кода, которые захотите: геттеры, сеттеры, константы. Затем умножьте два вместе.
Если вам нужно изменить его архитектуру, просто измените шаблоны и создайте заново.