全局函数和将这样的函数封装到名称空间类中有什么区别吗



假设您有一个全局method()

您可以将它移动到一个名称空间和一个类中,并将其称为类似的东西

\NamespaceClass::method();

有什么不同吗?一个比另一个好吗?

从本质上讲,您没有更改任何内容,该方法对所有意图和目的都是全局的,就像以前一样——您仍然可以从任何地方调用它,但您必须键入更多字符。我是不是错过了一些令人尴尬的基本内容?

命名空间和类不仅可以帮助您对代码进行比较,避免名称冲突,而且可以使用自动加载器,只在需要时加载所需内容,从而加快速度。

你不太可能这样称呼你的方法:

\NamespaceClass::method();

您更有可能在文件的顶部声明use NamespaceClass语句,而只执行Class::method();

更有可能(也可能更好),您将实际实例化一个真实的对象,而不是使用静态方法(这很方便,但确实会破坏封装)。在你的例子中,你使用了一种静态方法,对很多人来说,这种方法并不是特别面向对象的。

从功能上来说,孤立地考虑,方法和函数之间没有真正的区别。但是一个方法可以访问类属性和私有方法,因此它可以进一步帮助您构建一个正确分配职责的系统。

但要想有意义,区别必须不仅仅是表面上的。如果您正在使用类和对象,请阅读SOLID原则和设计模式(一次读一点),并接受OOP的优势。

最新更新