Delphi应用程序创建了一个全局变量Application,是一个TApplication的类实例。我们知道这个用起来是很方便的,和感性认识也很符合,感觉这个变量就代表着应用程序。
但是,来细想一下,这个TApplication类是应该被设计成单例才对的啊感觉。但是实际上VCL允许你自己创建多个Application实例,你完全可以创建自己的Application1,Application2。但是这些变量创建了都是功能有限的,你用你自己的Application1变量很多功能是完成不了的。
看一下VCL的源码就发现,Application这个全局变量是被硬编码到很多类里面去的,这些类只认Application。在一个类的代码里面硬编码使用一个全局变量,这严格来说是非常糟糕的。严格OO的语言中根本就没有全局变量,别说你使用它了。更要命的是VCL甚至允许你自己创建多个Application实例出来。
这样的设计不算好的吧,只能说是图个方便。