지금까지 많은 데이터베이스 (MySQL) 웹 앱을 작성했지만 항상 내 구조가 다소 어색하다고 생각합니다. 여기에 조언을 기대하면서 사용하는 프로그래밍 / 디자인 패턴을 개선하고 싶습니다. 특히 데이터베이스 (스키마) 구현을 캡슐화하는 OOP 접근 방식을 보완하는 구조를 찾을 수 없습니다. 나는
내 질문은 모범으로 가장 잘 설명 될 수 있다고 생각하십시오. 인보이스 객체 / 클래스가 있다고 말하는 두 가지 방법이 있습니다.
먼저 정적 멤버 함수를 사용하는 것입니다
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 문은 필요한 것만 선택해야하는 것처럼 비효율적 인 것처럼 보이지만 송장에 멤버 변수가 있으면 "보증 된 데이터"를 의미하는 것 같습니다.
질문을 명확하게 설명했는지 모르겠습니다.이 아키텍처 / 디자인 패턴에 대한 다른 최선의 접근 방법은 무엇입니까?
조언 감사합니다