到目前为止,我已经写了许多数据库(MySQL)Web应用程序,但是我始终认为我的结构有点笨拙。我想改善我使用的编程/设计模式,希望在这里提供一些建议。特别是,我找不到一种可以补充OOP方法的结构,该方法封装了数据库的实现(模式)。一世
认为我的问题可以用例子来最好地解释。我现在使用2种方法说我有一个发票对象/类:
首先是使用静态成员函数
class Invoice
{
int id;
string ref;
int customer_id;
date created;
date due;
static id create();
static bool update(id, field1, field2, ...);
static bool delete(id);
static bool get(id);
};
第二种方法是将所有内容放入数据库对象中:
class Database extends ProprietaryDBConnecter, Singleton
{
id createInvoice();
bool updateInvoice(id, field1, field2, ...);
bool deleteInvoice(id);
bool getInvoice(id);
id createCustomer();
bool updateCustomer(id, field1, field2, ...);
bool deleteCustomer(id);
bool getCustomer(id);
// etc...
}
我发现(SQL)成员函数与“视图”非常不同,因为“视图”确定了类需要具备的内容,因此似乎破坏了文档/视图的体系结构。
同样,这似乎效率很低,例如SELECT语句仅应选择所需的内容,但是Invoice中成员变量的存在似乎意味着“保证数据”。
不知道我是否清楚地解释了这个问题,对于这种体系结构/设计模式/已知方式还有哪些其他最佳方法?
感谢您的建议