Как мне поддерживать мои объектные модули в Perl? - PullRequest
2 голосов
/ 18 октября 2010

Я пишу некоторый объектный модуль на Perl, используя Moose.Я использую store экземпляры созданных объектов, затем использую их.

Базовое представление данных моего объекта остается тем же, но время от времени я добавляю больше функциональных возможностей - например, методы класса или методы объекта.

Могу ли я продолжать использовать мои сохраненные объекты, которые были созданы с более ранней версией модуля, с новыми функциями?Или я должен заново создавать объекты каждый раз, когда меняю модуль?

Какова общая парадигма разработки объектного модуля, в котором базовая структура данных не меняется, а функциональность меняется?

Ответы [ 3 ]

2 голосов
/ 18 октября 2010

Пока структура данных не меняется, с вами все будет в порядке: данные отбрасываются и возвращаются в пространство имен вашего класса: это гарантирует, что для этих данных будут доступны новые методы.

ОСТЕРЕГАЙТЕСЬ, изменяя структуру данных, хотя!

Я не вижу в этом ничего плохого, хотя для некоторых целей вы можете просто использовать базу данных для хранения своих данных и получить к ней доступ в виде OO, используя один из множества ORM (DBIx :: Class, Fey :: ОРМ или какой-либо другой).

1 голос
/ 19 октября 2010

Я рекомендую взглянуть на KiokuDB.

Помимо прозрачной сериализации объектов Moose в хранилище графиков, в нем также есть средство для обработки переходов между версиями Class.По сути, вы можете определить процедуру перевода, чтобы перейти от версии 0.1 к 0.2 вашего класса и передать ей переход.KiokuDB выполнит эту процедуру и позволит вам повторно сохранить результат.

1 голос
/ 18 октября 2010

Дайте KiokuDB водоворот.Это может быть именно то, что вы хотите;в соответствии с сайтом, на который ссылаются:

" KiokuDB - это объектно-ориентированный интерфейс персистентности на основе Moose для ряда бэкэндов хранилища. "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...