Вот ситуация.... ... У меня есть DBManager, который реализует DBInterface, в DBInterface я получил 4 метода:
-create(DBCmd);
-read(DBCmd);
-update(DBCmd);
-delete(DBCmd);
Объект DBCmd отвечает за создание инструкции SQL, а DBCmd требует объекта в инструкции sql:
class DBCmd{
public _constructor($aObj){
}
public executeCreate(){
}
public executeRead(){
}
public executeUpdate(){
}
public executeDelete(){
}
}
Поток будет таким:
aObject ---> put it into DBCmd ----> put the DBCmd in DBManager ---> execute
Но проблемы возникают, когда я получаю некоторые объекты, связанные с другими таблицами, например... у клиента есть запись о покупке, и в этой записи о покупке много элементов....
Итак, что мне делать в моем методе чтения? я должен прочитать все записи, связанные с клиентом?? Нужно ли мне также зацикливать все предметы внутри записи о покупке? Если да, когда я читаю клиента, мне нужно запросить 3 таблицы, но некоторые из них могут не нуждаться в просмотре..... это трата ресурсов...
И я придумываю другое решение, я создаю новый набор DBCmd, который позволяет мне получать связанные элементы БД, например:
class getReleatedPurchaseRecordDBCmd{
public _constructor($aCustomerObject){
}
//.... ....
}
Но в этом «решении» у меня возникли некоторые проблемы: я теряю отношения в объекте «клиент»… да, я могу прочитать все записи, получить объект «клиент», в основном ничего не зная о записи о покупке. ...
Некоторые могут попросить меня сделать что-то вроде этого:
class customer{
//skip other methods...
public getPurchaseRecords(){
//query the db
}
}
Это работает, но я не хочу, чтобы структура объекта имела сильную связь между базой данных... Вот почему я придумываю материал DBCmd...
Итак, все кажется очень связанным, как это решить? Спасибо.