TMyClass = class(TObject)
private
FMyObject: TObject;
function GetMyObject: TObject;
public
property MyObject: TObject read GetMyObject write FMyObject;
end;
function TMyClass.GetMyObject: TObject;
begin
if FMyObject = nil then
FMyObject := TObject.Create;
Result := FMyObject;
end;
「MyObject」は内部的には作成されず、外部で作成されてパラメータに割り当てられることがあります。このオブジェクトが外部で作成されている場合、私はこのコンテキストでそれを解放することはできません。これはオブジェクトフィールドタイプのライフサイクルを制御する最良の方法ですか?
内部で作成されたすべてのオブジェクトにTListとAddを作成し、デストラクタのすべてを破棄する必要がありますか?
パラメータが内部で作成されたかどうかを制御するにはどうすればよいですか?あなたは何をすることを提案しますか?これを行うパターンはありますか?
プライベートアクセス修飾子がある場合、MyObjectは外部からどのように作成できますか?このクラスは何も対象外です。 – heximal
@heximal:コンストラクタインジェクションによる可能性が最も高い(例コードではない) – jpfollenius
@heximal:フィールドはプライベートで、プロパティはpublicで読み書き可能です。つまり、 'Obj.MyObject:= TSomeObject.Create; 'のように使用できます。 – ain