최근에 C++ DLL에서 'loadCar'메소드를 설계하는 최선의 방법에 대해이 C++ DAL이 게시되었습니다. 'bool DAL :: loadCar (int id, Car &) {} '이 (가) 사용할 최고의 서명이됩니다.C++ DAL 디자인 - 복합 객체로 외래 키 테이블 포함
이제는 많은 유스 케이스에서 클라이언트 코드가 종종 car 객체로 자동차 제조업체를 검색하려고합니다. 데이터베이스의 'car'테이블에는 제조업체 테이블에 대한 외래 키 (MANUFACTURER_ID)가 있습니다. 지금 Car 클래스에서 선택 필드를 가지고 생각하고, 무엇인가 :
class Car
{
public:
void setModel(...);
void setEngineSize(...);
Manufactuer getManufacturer();
private:
Manufactuer /* Reference, Pointer or Value - TBD */ manufacturer_;
// etc.
};
문제는 당신이 즉, 포인터, 참조 또는 간단한 값 유형 중 하나로서 제조 업체 개인 회원있을 것입니다 :
Manufactuer *manufacturuer;
Manufactuer &manufacturuer; // Illegal - needs to be initialised, so use Null Obj Pattern?
Manufactuer manufacturuer;
이제 loadCar 메서드에는 bool loadManufactuer 매개 변수 (기본값은 false)가 있습니다. 나는. 우리는 단지 제조사에 로딩의 비용과 저장 오버 헤드를 필요로한다. 이렇게하면 제조업체를 포인터로 저장해야한다고 생각합니다 (첫 번째 옵션).
필자가 구성을 한 레벨 위로 올려 놓지 않는 이유는 DAL이 단일 데이터베이스 쿼리를 사용하여 Car + Manufacturer를 작성할 수 있기를 바랍니다. 여기에 표시되지 않았지만 사용자는 Car 객체 컬렉션을 쿼리 할 수 있습니다.
포인터를 사용하여 레퍼런스와 포인터가 섞여있는 것처럼 느껴졌지만 임시 변수가 많이 도입되지 않으면 어떻게 수행되는지 알 수 없습니다. 아마도 Singleton Null Object가 도움이 될까요?
희망이 있습니다.
Btw, 합의점은 사용하는 WORST 서명이었습니다.) – Goz
당신이 옳았는데, 어떻게 입력했는지 알 수 있습니다. – ng5000