Re: binder
От: MaximE Великобритания  
Дата: 15.09.03 11:58
Оценка:
Здравствуйте, Yagg, Вы писали:

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

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

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

class person
{
public:
    // ctors

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

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

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


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

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

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


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