我想知道是否有一个设计模式,其中每个类都有静态公共方法,您可以在代码中的任何位置使用它们。
如果遵循某种已知标准,这种模式是否被认为是安全的?
我个人使用依赖注入,并使用命名空间,但是,我开始了一项新工作,其中所有代码都是require
的静态节日,我不喜欢它。
所以我正在寻找一个有效的信息,关于我是应该继续努力还是说服他们采用不同的方法。
答案 0 :(得分:1)
这种情况并不常见,但我可以想象有人在考虑功能范式的情况下这样做,其中类仅用于对相关函数进行分组。
但是,如果这个类中的任何一个被实例化,有一个状态并且被全局使用那么这是一个糟糕的方法,因为它有很多副作用,不可测试性,耦合等等。
答案 1 :(得分:1)
如果所有代码都存在于静态方法中,并且您没有使用getter / setter,则它是almost certainly a poor design。
面向对象设计的基本意图 - 与程序设计相反 - 是将数据和行为分发到对象。这意味着您可以在调用方法之前始终验证“car”对象是否有效,并且执行此操作的逻辑在一个位置是一致的。
使用静态方法,数据由调用应用程序代码有效管理,而不是对象。这意味着很快就能够将对应用程序的有效状态的理解分发到许多不同的地方。
这对于老派的PHP程序员来说更为熟悉,对于简单的应用程序来说,这已经足够了。
缺点是你失去了面向对象的大部分好处,特别是“所有东西都生活在一个地方”的可扩展性和可维护性的好处。