Delphi 2007 응용 프로그램에서 우리는 다음과 같은 많은 구성을 사용하고 있습니다
FdmBasic:=TdmBasicData(FindOwnerClass(AOwner,TdmBasicData));
FindOwnerClass는 현재 구성 요소의 소유자 계층 구조를 위로 이동하여 특정 클래스 (예 : TdmBasicData)를 찾습니다. 결과 객체는 필드 변수 FdmBasic에 저장됩니다. 우리는 주로 데이터 모듈을 전달하는 데 사용합니다.
예 : 보고서를 생성 할 때 결과 데이터는 압축되어 TdmReportBaseData 데이터 모듈을 통해 액세스 된 테이블의 Blob 필드에 저장됩니다. 응용 프로그램의 별도 모듈에는 ReportBuilder를 사용하여 보고서의 데이터를 페이지 형식으로 표시하는 기능이 있습니다. 이 모듈의 기본 코드 (TdmRBReport)는 클래스 TRBTempdatabase를 사용하여 압축 된 BLOB 데이터를 Reportbuilder 런타임 보고서 디자이너에서 사용할 수있는 다른 테이블로 변환합니다. TdmRBReport는 모든 종류의 보고서 관련 데이터 (보고서 유형, 보고서 계산 설정 등)에 대해 TdmReportBaseData에 액세스 할 수 있습니다. TRBTempDatabase는 TdmRBReport로 구성되지만 TdmReportBasedata에 액세스해야합니다. 이제 이것은 위의 구성을 사용하여 수행됩니다.
constructor TRBTempDatabase.Create(aOwner: TComponent);
begin
inherited Create(aOwner);
FdmReportBaseData := TdmRBReport(FindOwnerClass(Owner, TdmRBReport)).dmReportBaseData;
end;{- .Create }
내 생각에 이것은 TRBTempDatabase가 많은 소유자를 알고 있다는 것을 의미하며 이것이 일종의 코드 냄새인지 안티 패턴인지 궁금합니다.
이것에 대한 당신의 생각은 무엇입니까? 이것이 코드 냄새입니까? 그렇다면 더 좋은 방법은 무엇입니까?