language-agnostic - OOP:什么时候是对象?

标签 language-agnostic oop

我正在尝试理解面向对象。我当然有点理解,但有时我不是 100% 清楚。你如何决定什么应该变成一个对象(另一个大整体对象的小对象部分)或者什么不值得成为一个对象,或者它应该只是那个大整体对象的一个​​属性?

对于一扇门,我猜门 Handlebars 应该是一个独立的物体,但是中间插入 key 的那部分也应该是一个独立的物体还是什么?这是一个简单的例子,所以我可以解释我的困惑。如果你的例子可以帮助你更好地说明你的观点,你可以使用它。

我在想,如果我要多次使用它,我应该把它变成一个对象。我认为这是解决此问题的实用方法,您同意吗?

谢谢

最佳答案

与往常一样,不幸的是,答案是:这取决于...

一开始,您有某种环境,并且想要为其创建模型。但是你不会对每件事都建模,你会专注于重要的事情。这就是我开始的原因:这取决于。这取决于您完成任务所需的详细信息。

拿汽车和它的轮子来说——如果你对一个城市建模并想要一些交通,你可以创建一个带有属性“numberOfWheels”的“Car”类。但是,如果您设计汽车,那么您很可能还想创建一个“Wheel”类并将其中的四个添加到“Car”类中。

经验法则:

  • 如果那个,你在想什么,有多个属性,定义一个类
  • 如果那个,你在想什么,有一些行为,定义一个类
  • 如果那样,您正在考虑的事情可能会增长或扩展,请定义一个类
  • 如果那样的话,你在想什么,必须是可排序的、可比较的,定义一个类
  • 如果您不确定,请定义一个类 ;)

  • 编辑

    因为您强调了“多次使用”方面:我认为这不是决定是否使用类的方面。想想一个简单的计数器,一个 for 循环中的整数值。你会使用这个概念数百次,但我敢打赌你永远不会想到包装这个可怜的小int进入“计数器”类 - 只是因为您多次使用“计数器的概念”。

    关于language-agnostic - OOP:什么时候是对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1819444/

    相关文章:

    algorithm - 每个列表的元素数量都是随机的,如何在同一列中对齐相同的元素?

    java - 无法转换为子类

    javascript - Function.prototype.method 中的 return this 有什么作用?

    python - 扩展方法时将局部变量保留在作用域内

    php - 类扩展自身?

    algorithm - 计算旋转矩形中的最大内接矩形

    algorithm - 什么是可用于有效查找对象是否与一组模式中的任何一个匹配的算法/结构?

    unit-testing - 代码覆盖工具如何以不同的语言工作?

    compiler-construction - 编程语言的标准库是如何实现的?

    c++ - 体系结构 x86_64 : using a structure defined in header file 的 undefined symbol