Singleton Pattern模式的一个简单问题(50分)

  • 主题发起人 主题发起人 南京男生
  • 开始时间 开始时间

南京男生

Unregistered / Unconfirmed
GUEST, unregistred user!
参考MM中的例子。
如下,AccessInstance方法是这种模式的特点,这是访问实例的唯一通道。
但这个函数编译通不过,FInstance定义成了常量类型,这是怎么回事?
class function TProgressor.AccessInstance(Request: Integer): TProgressor;
const FInstance: TProgressor = nil;

begin
case Request of
0 : ;
1 : if not Assigned(FInstance) then
FInstance := CreateInstance;
2 : FInstance := nil;
else
raise Exception.CreateFmt('Illegal request %d in AccessInstance',
[Request]);
end;
Result := FInstance;
end;
 
class function TProgressor.AccessInstance(Request: Integer): TProgressor;
{$J+} //
const FInstance: TProgressor = nil;
{$J-} //

begin
case Request of
0 : ;
1 : if not Assigned(FInstance) then
FInstance := CreateInstance;
2 : FInstance := nil;
else
raise Exception.CreateFmt('Illegal request %d in AccessInstance',
[Request]);
end;
Result := FInstance;
end
 
思来想去,也只有加开关符,如果定义成变量,好像不大可能初始化。
 
接受答案了.
 
后退
顶部