Сомнительная часть здесь имеет класс Phone
, который отвечает за хранение данных, помимо того, что уже является Phone
. Класс Phone
должен заботиться о том, чтобы быть только Phone
. Объект Phone
имеет данные и методы. Вы можете расширить методы, как вы говорите, и вам, вероятно, нужно сохранить состояние (данные) Phone
(s). Вам просто нужно запросить у Phone
данные, чтобы иметь возможность доставить эти данные другому объекту, ответственному за сериализацию, для хранения их так, как вам нравится. Используя уже созданный ORM или некоторый класс интерфейса базы данных, вы пишете сами.
Для использования средств базы данных вы можете использовать API внешнего объекта или класса БД или ORM. Вы также можете сохранить некоторую ссылку на эту внешнюю сущность внутри Phone
, чтобы иметь возможность ссылаться на ее методы из Phone
. Или иногда вы наследуете от класса ORM, чтобы его методы были доступны.
Если этот последний случай не является требованием для использования ORM (похоже, что он есть), он делает Phone
похожим на ORM, а это не так, и я бы предпочел просто использовать API БД, или уровень обслуживания базы данных из Phone
.
Расширение Phone
путем создания подклассов с другими или дополнительными функциями выглядит нормально для меня. Вы также можете обдумать определение дополнительных интерфейсов с функциями и заставить некоторые классы телефонов использовать / реализовывать их.