В C# есть простые структуры. Мне нужна была функция типа преобразователя для преобразования объектов b и c в тип объекта A, простую структуру.
Я не могу использовать инициализатор объекта, потому что мне нужно выполнять различные вычисления, которые просто слишком сложно для встраивания. Инкапсуляция здесь очень помогает.
Какой способ предпочтительнее?
- статический метод класса A
конструктор класса A - класс-строитель
- библиотека-конвертер
Я бы использовал статический метод для класса A в Java 11. В Java 11 нет строгого понятия "структуры", теперь это " Record» в Java 17. Таким образом, в Java 11 стилистически это было бы нормально. В C# кажется немного безвкусным портить красивый список общедоступных полей с помощью этой функции конвертера. Может быть, это запах кода?
Если это имеет значение, мой вариант использования — я просто хочу преобразовать типы при создании цепочки функций. Мне не нужно создавать объекты с нуля (и инициализатор объекта уже выполняет эту роль). Мне не нужна универсальность Строителя или Конвертера. Единственная причина сделать это - стиль и соглашение.
Я также думаю, что конструктор может быть запахом кода в отличие от инициализатора объекта, но я действительно не знаю.
Подводя итог, все мои варианты имеют негативные последствия, поэтому скажите мне, что делать.
Подробнее здесь: https://stackoverflow.com/questions/791 ... or-pattern