【问题标题】:Is there some kind of a design pattern that pushes for public statics methods?是否有某种设计模式推动公共静态方法?
【发布时间】:2015-06-16 18:33:26
【问题描述】:

我想知道是否有一种设计模式,每个类都有静态公共方法,您可以在代码中的任何地方使用它们。

如果遵循某种已知标准,这种模式是否被认为是安全的?

我个人使用依赖注入和命名空间,但是,我开始了一项新工作,他们的所有代码都是带有require 的静态嘉年华,我不喜欢它。

因此,我正在寻找有关我应该继续按照他们的方式工作还是说服他们转向不同方法的有效信息。

【问题讨论】:

  • 尝试找出以前的开发人员使用静态方法的原因。您可能只是从开始使用 PHP 的程序程序员那里看到了一种反模式。

标签: php design-patterns


【解决方案1】:

如果所有代码都存在于静态方法中,并且您没有使用 getter/setter,那就是 almost certainly a poor design

与过程设计相反,面向对象设计的基本意图是将数据和行为同时分配给对象。这意味着您始终可以在调用方法之前验证“汽车”对象是否有效,并且这样做的逻辑是一致的并且在一个地方。

使用静态方法,数据由调用应用程序代码而不是对象有效地管理。这意味着很快,对应用程序有效状态的了解就会分布到许多不同的地方。

这样做的好处是老派 PHP 程序员更熟悉,而且对于简单的应用程序,它完全足够了。

缺点是您失去了面向对象的大部分好处,尤其是可扩展性和可维护性的“一切都在一个地方”的好处。

【讨论】:

    【解决方案2】:

    这并不常见,但我可以想象有人会考虑到功能范式,其中类仅用于将相关功能分组在一起。

    但是,如果此类中的任何一个被实例化、具有状态并在全局范围内使用,那么由于许多副作用、不可测试性、耦合等原因,这是一种糟糕的方法。

    【讨论】:

      猜你喜欢
      • 2011-04-19
      • 1970-01-01
      • 1970-01-01
      • 2010-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-11
      • 1970-01-01
      相关资源
      最近更新 更多