静态特性的“缺陷”

静态特性应用在变量,类和方法上,带来的好处是无可厚非的:

1)作为静态变量(用static关键字修饰的函数变量,创建时可提供默认的初始化值,其初始化值不能是表达式),在某一函数执行后,其值仍然不会丢失。这可在全局变量作为模拟静态时,消除了变量名称冲突的现象。

2)作为类的静态属性或方法,其变量值或方法对每个类的实例都是有效的,即是所有的实例共享这个成员或方法。这样可以避免创建类的实例,省略实例化的代码,更高效些(因为类的每个实例都会占用一小部分的系统资源)。

然后,静态类会对特定类型的测试产生影响。因为静态特性的使用会导致类之间通过名称绑定一起,使得单独的测试某个组件变得更加困难。因为类的名称是硬编码的,这样测试时,这个类不容易被模拟。

有 这么个设计原则,叫IoC(控制反转),它试图在OOP中去掉所以相互依赖的现象。相互依赖现象少了,越容易单独测试某个组件。也使对象具有更好的多态性和封装性。这是对于复杂的系统来说,是非常重要的。显然,使用静态特性,IoC就受到限制。

在PHP的应用中,静态特性还是很受欢迎的。现在,自己只能等着瞧它如何“走”~

发表回复

您的电子邮箱地址不会被公开。