Как правильно передать объект в класс и стоит ли это делать? Всем привет! У меня есть класс Posts, который работает с базой данные (точнее с таблицей постов и связанными с ней таблицами). Извне, я запрашиваю данные Posts->getById(33); Класс получает данные из БД, создает на основе полученных данных объекты PostEntity и возвращает в вызывающий класс. Объект PostEntity представляет из себя класс содежащий сетеры и геттеры с простейшими манипуляциями с данными. Так же он реализует интерфейс JsonSerializable что позволяет мне просто бросать объект в вывод JSON передавая его приложению.К вопросу: В объекте поста есть метод PostEntity->getText() который отдает данные с html тегами. Но теперь у меня появилась необходимость сделать так, чтобы в разных местах API я мог указать в каком формате мне отдать текст поста (с html тегами или BB кодами). Т.к. файл, который вызывает метод Posts->getById(33); никак не взаимодействует, да и не должен взаимодействовать с объектом PostEntity, я никак не могу повлиять на метод PostEntity->getText(), потому что я не вызываю его, т.к. данные выводятся реализуя метод JsonSerializable. Как решить данную проблему? У меня есть идея, что вызывая метод Posts->getById(33); я должен передать путь к новому объекту, например, PostEntityBBCodes, который будет расширять класс PostEntity и переопределять метод getText() так, чтобы тот преобразовывал данные не в HTML а в BB коды. Правильно ли я сделаю в таком случае? Да и не совсем еще понятно как передать объект в класс Posts, ведь если мне нужно будет получить несколько постов. То каждый последующий пост перезапишет объект предыдущего. т.к. объекты передаются по ссылке.
Да, ваш подход к решению проблемы звучит разумно. Создание класса PostEntityBBCodes, который расширяет класс PostEntity и переопределяет метод getText(), чтобы преобразовывать данные в BB коды, позволит вам гибко выбирать формат вывода текста поста в разных частях вашего приложения.
Чтобы избежать перезаписи объекта при запросе нескольких постов, вы можете создавать новый объект PostEntity (или его подклассы) для каждого поста внутри метода getById(). Таким образом, каждый пост будет представлен отдельным объектом и не будет перезаписывать данные предыдущего поста.
Поэтому, передача объекта в класс Posts и создание отдельного объекта для каждого поста в методе getById() является хорошим способом решения вашей проблемы.
Да, ваш подход к решению проблемы звучит разумно. Создание класса PostEntityBBCodes, который расширяет класс PostEntity и переопределяет метод getText(), чтобы преобразовывать данные в BB коды, позволит вам гибко выбирать формат вывода текста поста в разных частях вашего приложения.
Чтобы избежать перезаписи объекта при запросе нескольких постов, вы можете создавать новый объект PostEntity (или его подклассы) для каждого поста внутри метода getById(). Таким образом, каждый пост будет представлен отдельным объектом и не будет перезаписывать данные предыдущего поста.
Поэтому, передача объекта в класс Posts и создание отдельного объекта для каждого поста в методе getById() является хорошим способом решения вашей проблемы.