Delphi 实现一个类只有一个实例

Lv_Sand 2011-03-01 04:20:28
怎么阻止类的对象从Create构造函数初始化
...全文
150 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lv_Sand 2011-03-05
  • 打赏
  • 举报
回复
Delphi中访问限制都是在不同的单元才是有作用的。
类的构造函数是public的,无论把它放在哪个访问限制符下都是不会改变的 求解!!
JohnYale 2011-03-05
  • 打赏
  • 举报
回复
转自 神奇小子ST 的博客 D2006以后可用

TSingleton = class
strict private
constructor Create;

class var
FInstance:TSingleton;

public
class function GetInstance: TSingleton;
procedure FreeInstance;

end;

implementation

constructor TSingleton.Create;
begin
inherited;
end;

class function TSingleton.GetInstance: TSingleton;
begin
If FInstance = nil Then
begin
FInstance := TSingleton.Create();
end;
Result := FInstance;
end;

procedure TSingleton.FreeInstance;
begin
FInstance:=nil;
end;
xujin3000 2011-03-05
  • 打赏
  • 举报
回复
参考刘艺的delphi模式编程这本书吧,单例模式,讲解的非常好,是使用类方法来创建对象,而非create过程
Mit1208 2011-03-01
  • 打赏
  • 举报
回复
由于对象本身所占内存的分配是由编译器完成的,因此即使没有构造函数,对象也一样可以被构造.构造函数的职责只是初始化对象的数据成员,没有构造函数只意味着不会对数据成员进行初始化而已,编译器会对所有数据进行清零初始化.此外,由于Object Pascal中所有类(除TObject类本身)都是从TObject类派生,因此编译器会调用TObject.Create()构造函数.不过,这个函数只是一个空函数.

抄自Delphi 高手突破
不知道对你有用不.
thx1180 2011-03-01
  • 打赏
  • 举报
回复
试试改为提供接口
Lv_Sand 2011-03-01
  • 打赏
  • 举报
回复
单例模式 实现

在Unit2中声明一个类A,把类A的Create构造方法设置为私有。
可是在Unit1(uses Unit2)中类A的对象还是可以通过Create完成初始化。
bdmh 2011-03-01
  • 打赏
  • 举报
回复
建一个全局的,参考工厂模式

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧