Re[2]: binder
От: Аноним  
Дата: 15.09.03 12:08
Оценка:
Здравствуйте, MaximE, Вы писали:

ME>Здравствуйте, Yagg, Вы писали:


Y>>Очень хочется засунуть работу с СУБД в отдельный класс, чтобы основная

Y>>работа программы шла только с объектами типа
Y>>class Person
Y>>{
Y>> property<int> id;
Y>> property<std::string> name;
Y>> ...
Y>>};

ME>Например так (memento pattern):


ME>
ME>class person
ME>{
ME>public:
ME>    // ctors

ME>public:
ME>    const uuid& id() const { return variant_cast<uuid&>(memento_["id"]); }
ME>    void id(const uuid& u) { memento_["id"] = u; }

ME>    string name() const { return variant_cast<string>(memento_["name"]); }
ME>    void name(const string& s) { memento_["name"] = s,c_str(); }

ME>private:
ME>    typedef map<string, variant> memento;
ME>    memento memento_;
ME>};
ME>


Поясни, плиз, из какой библиотеки variant_cast ?
(я так понимаю она из _variant_t в соответствующий тип преобразует ) ...


ME>Должна быть фабрика, которая будет общаться с БД и читать/записывать memento и создавать твои конкретные классы. Так как класс обращается к свом свойствам по символьным именам, запросы к БД должны при необходимости переименовывать столбцы.


ME>Св-ва для удобства можно обернуть в proxy, которые различают запись и чтение.


Y>>и не зависела от запросов, таблиц...


ME>Вот чтобы она ни отчего не зависела сделать непросто.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.