按常规的设计来说,一个软件中应尽量避免使用全局变量。然而,在现实工作中,这种情况实难避免。如我们要做一个管理系统,对于每一个登录用户来说,都应有一个用户信息的全局变量来跟踪此用户的信息,还有其他一些为了灵活实现某些功能而设的全局变量。 与局部变量不同,设计全局变量的目的就是为了在整个软件中使用,这也使得全局变量的管理比局部变量要复杂,因为如果不经过缜密的设计和管理,就很难控制在何处修改全局变量,在何处使用全局变量。一个很好的原则,就是全局变量的入口和出口只有一个,这次就能保证全局变量管理的混乱。 入口只有一个,即全局变量必须是private型,但有且只有一个public方法来对其进行赋值。 出口只有一个,即有且只有一个public方法来读取该变量的值。 还拿刚才那个管理系统做例子,在B/S系统中,通常用session来保存登录用户的相关信息,但是session就像一个大容器,所有的类似的全局变量都可以放在里面。如果在想给某全局变量赋值的时候,就简单的使用session.setAttribute方法,一个系统开发下来,我们就无法记得究竟创建了多少个全局变量,这些全局变量的值在何处被使用,且都在何处被改变了值,都将变得混乱。 正确的做法是在设计时就确定系统中需要多少个这样的全局变量,然后创建一个专门的类来管理这些变量,类中定义了每个变量的名称,且为每个变量都提供了set和get方法。这样就实现了集中管理,且每个变量只有一个入口和出口。 总结一下,全局变量应这样管理。 1.创建单独的类对全局变量进行管理 2.类中提供每个全局变量的set和get方法,保证只有一个入口和出口 3.使用全局变量时调用该类的相应方法即可。 |