Я начал разработку с создания класса "ZProject", который использовался только для чтения или обновления информации заголовка проекта SAP PS, поэтому он имел только 1 структурный атрибут с типом таблицы PROJ.
Теперь мне нужнодобавить действительно сложную операцию «Копировать» в полный проект.Это означает, что я прочитал полную справочную иерархию проекта PS, элементы СПП, виды деятельности, этапы, затраты ... затем переименовал идентификаторы и, наконец, сохранил копию, используя вызов BAPI.Поскольку класс ZProject не имеет всех этих атрибутов, я сделал это статическим методом, но я бы хотел сделать это по-другому.Я рассмотрел следующие варианты:
Добавьте все необходимые атрибуты в класс ZProject (СПП-элементы, иерархия, действия ...).Конструктор не будет заполнять их, потому что они не всегда нужны, но если метод get нуждается в них и обнаруживает, что они пустые, он вызовет своего рода метод «init», который загружает всю информацию.Наконец, я реализую метод экземпляра глубокой копии, который переименовывает необходимые идентификаторы и сохраняет их в базе данных, используя BAPI.
Первый параметр позволяет классу читать личные атрибуты, обращаясь напрямую, безиспользуя геттер, поэтому без запуска метода init.Будущий разработчик может быть смущен тем, что не понимает, что даже в частном порядке вы должны использовать геттеры.Тогда альтернативным решением является создание класса ZProjectFull с конструктором, который уже читает все, и, наконец, тот же метод глубокого копирования.Если я сделаю это, должен ли ZProjectFull наследовать от ZProject?
У вас есть лучшие идеи о том, как это сделать?Должен ли я реализовать метод clone () вместо глубокого копирования, может быть?