unit SingleObjectAggregateUnit; interface uses BidLotDM; type TSingleObjectAggregate = class private FBidLotDM: TBidLotDataModule; function GetBidLotDM: TBidLotDataModule; public destructor Destroy; override; property BidLotDM: TBidLotDataModule read GetBidLotDM; end; { Single Object Manager } function SingleObjectAggregate: TSingleObjectAggregate; implementation var gl_ingleObjectAggregate: TSingleObjectAggregate; function SingleObjectAggregate: TSingleObjectAggregate; begin if not Assigned(gl_ingleObjectAggregate) then gl_ingleObjectAggregate := TSingleObjectAggregate.Create; Result := gl_ingleObjectAggregate; end; { TSingleObjectAggregate } destructor TSingleObjectAggregate.Destroy; begin FBidLotDM.Free; inherited; end; function TSingleObjectAggregate.GetBidLotDM: TBidLotDataModule; begin if FBidLotDM = nil then FBidLotDM := TBidLotDataModule.Create(nil); Result := FBidLotDM; end; initialization finalization gl_ingleObjectAggregate.Free; end.