php - PHP 类属性:传递 id 还是完整对象?
问题描述
我已经考虑了一段时间并在网上搜索,但我无法找到我即将写下的问题的明确答案。
首先要做的事情是:我想做什么?
我正在尝试使用面向对象的编程对机器(工厂的物理资产)进行建模。简单来说,假设机器只有一个id和一个相关区域。在这个模型中,我有两个类(我省略了这个例子中所有不相关的属性):
- 机器。[属性:id,区域]
- 区。[属性:id,名称]
在这种情况下,我必须决定如何处理机器类的“区域”属性。就我而言,我对这个属性的选择是:
- 属性“zone”必须只包含机器所在区域的 id。
- 属性“zone”必须包含对完整“Zone”对象的引用。
在第一种情况下,我毫不怀疑在客户端代码中要做什么(实例化一个 Zone 对象并将机器“zone”(id)属性传递给 Zone 对象,以便它可以获取该对象内的区域信息)。
但是如果我选择第二个选项,我对 Machine 类相对于 Zone 类的使用有一些疑问
- 我应该实例化一个空的 Zone 对象并将其传递给 Machine 对象吗?如果是这样,我是否应该在将区域信息传递给 Machine 对象之前(使用机器 ID)对其进行检查?或者,我应该在机器类构造函数中调用区域类获取方法吗?
- 或者,我应该只在绝对需要它们的情况下调用这些区域获取方法(即,当我使用 Machine 类的 getZone 方法时)?在这种情况下,我应该使用静态方法直接返回“区域”属性内的区域对象吗?
结论:如果我只需要实例化一个类和区域,我发现第一个选项(仅包含 id 的区域)更好。但是,当我必须处理多个 Zone 和 Machine 实例时,我想将完整的 Zone 对象放在 Machine 类中是一个更明确的选择。
我错了吗?
非常感谢。
解决方案
推荐阅读
- r - R- 布尔值:for-loop(向量中的向量)
- android - ArrayAdapter 和 ViewGroup.GetChildAt 无法正常工作
- altair - 将动态查询应用于祭坛条形图
- c++ - 我正在尝试使用 for 循环用整数填充数组
- javascript - 当 id 到达浏览器视口的顶部时,在 JavaScript 中执行操作
- sql - SQL 查询根据该人是否参加过任何前一年的同一活动来查找新客户或回头客
- java - Android Studio onClick 显示方法根本不起作用
- python - 如何在 Django 上自动运行我自己的 .py
- scheme - make-counter 保留下一个变量的状态
- python - 如何在 tkinter 中打印随机文本?