java - 分组类的方式与 PHP 不同吗?

标签 java php class composition delegation

<分区>

如标题所述;与例如 Java 相比,用 PHP 对类进行分组的方式应该有所不同吗?我目前正在阅读 O'Reilly 的书 OOA&D,在这些章节中,我学会了为每个特定任务使用一个类,而不是为一组事物使用一个类。最近,我查看了一些日历代码,这个类有数千行,里面包含了要使用的所有内容。然而,这对我来说似乎违反了让许多对象执行一项任务的观点,但鉴于 PHP 是 Web 开发,它应该有所不同吗?例如。怪物类。

最佳答案

答案:使用良好的设计原则,即使在 PHP 中也是如此。

除了不创建 Monster 类(也称为 God 类或对象)之外,以下模式特别值得一提:

  • 对象命名:
    • 类名应该是名词,因为它们是对象。
    • 方法名应该是动词,因为它们是 Action 。
  • Cohesion . 简短的版本基本上是:方法只做一件事并且把它做好。
  • 属性可见性:变量应该private,除非你有充分的理由不这样做,在这种情况下,使用protected。几乎总是你应该避免public
  • 使用接口(interface)和抽象。几乎没有人在 PHP 中使用接口(interface),但他们应该使用。这意味着我可以编写自己的实现细节,但仍然可以连接到一些使用该类的服务。

A somewhat outdated article on PHP design patterns that's still worth reading但对眼睛来说很难看。

精简版:

如果您曾经依赖数组来保存特定结构,那么它可能应该在一个类中。


我生活中的一个例子:ActiveRecord

如果我想构建一个不需要任何特定 Active Record 实现的网站怎么办?目前,一旦我选择了一个实现,我就会陷入困境,因为它们都是如此独特。如果他们真的实现了一个 ActiveRecordInterface,如果我想改变,我就可以换掉我实际的 ActiveRecordEngine

关于java - 分组类的方式与 PHP 不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7640588/

相关文章:

javascript - 如何使用 AngularJS 返回 HTML 页面

java - 调用 HTTP Restful api 的 Cron 作业

java - 我们可以为多个包中的一组 xsd 生成 JAXB 类吗?

php - 将 php $headers 放在特定联系表单中的何处以更改电子邮件 'From' 地址

Android解码gif问题

java - 如何访问子文件夹中的java类

java - 为什么第一次调用构造函数花费的时间比其他调用多 10 倍?

php - 在 PHP 表中显示 MySQL 数据不起作用

javascript 'if' 未从 ajax 捕获 null

java - Java 中的内部类 - 非静态变量错误