精简版,不解释。
unit BambooInstanceCache;
interface
uses
System.Generics.Collections;
type
TInterface_BambooInstanceCache<T> = interface
function Dequeue: T;
function IdleCount: Integer;
procedure ClearIdle;
procedure Enqueue(const aInstance: T);
end;
TBambooInstanceCache<T> = class(TInterfacedObject, TInterface_BambooInstanceCache<T>)
public type
TBambooRefProc_Var = reference to procedure(var aInstance: T);
strict private
FIdle: TList<T>;
FProcCreateInstance: TBambooRefProc_Var;
FProcDestroyInstance: TBambooRefProc_Var;
private
function Dequeue: T;
function IdleCount: Integer;
procedure ClearIdle;
procedure Enqueue(const aInstance: T);
public
constructor Create(const aProc