全局是一个可以在每个上下文中按名称访问的数据。
答案 0 :(得分:4)
您可能听说“每条规则都有例外”。
我已经编程了好几年了,在这个单身人士的“嘻哈”之前,我开始在我的程序中使用全局变量。
但是,最终,程序切换为将大多数变量作为本地,wheter类字段或方法字段处理。
它自然而然地出现了,似乎很多开发人员在我之前,之后和同一时间得出了相同的结论; - )
在大多数O.O.编程语言,程序本身,被认为是一个对象,因此是一个单例。
有时,几个必需的全局变量,即对象或非对象字段,可以封装为单例。
Singleton与任何其他“更好的练习”或“设计模式”一样,应该明智地使用, 学习什么时候和为什么有用,何时不适用。
干杯。
答案 1 :(得分:0)
我认为一般的想法是没有真正的“全球”数据。您可以将程序的用户信息(名称,密码,头发颜色)视为全局,并且实际上可能是。但可以想象(可能使用套接字)其他用户可能在同一会话中变为活动状态。您需要一个类(用户)来获取此信息,现在,需要它的几个实例。当您需要此信息时,您需要正确的用户实例。 (必须将正确的User对象传递给方法,或者必须在实例字段中可用;只是从MainClass.userInfo获取值将不再起作用。)
如果您最初编写程序的想法可能有多个用户,并且到目前为止它从未得到增强来处理它们,那么您的User类实例就是一个单例,从某种意义上说,它也是一个“全局”对象。但是您的代码将更易于理解,并且在极少数情况下需要 多个用户,并且可以轻松升级。