gpt4 book ai didi

oop - 面向对象设计问题

转载 作者:行者123 更新时间:2023-12-04 09:12:34 24 4
gpt4 key购买 nike

如果我正在编写一个游戏,其中有一个 worker (从树上)切割木材,我会将“cutWood”方法放在 worker 类还是树类中?

编辑:
我在 OOD 上阅读的第一个示例是关于一个圆(一个称为圆的类),其中包含一个称为“计算面积”的方法。
现在,果然一个圆不计算它自己的面积。
唯一的想法是计算面积是与圆相关的操作(对圆进行的操作)

因此,cutWood 方法与 worker 和树都相关。

最佳答案

我看不到 worker 中有任何木材切割方法的凝聚力。切割是在树上完成的,因此应该是树类的一部分。据推测,切割木材也将涉及改变木材类的某些内部状态。

worker 应该调用在他想要的任何树上的切割方法,而不是树告诉 worker 他应该砍它。如果你想像 Hans 暗示的那样抽象这个,你可以为 Cut 方法创建一个 ICuttable 接口(interface),并让你的树实现它。

考虑一下你熟悉的东西,String .当您想要剪切字符串(拆分)时,您不会在要执行此操作的每个对象中定义 splitString 方法。无论对象决定拆分字符串,都会发生同样的事情——通常需要知道目标对象(字符串)的内部结构才能做到这一点。许多其他对象只是简单地调用字符串的 split 方法。字符串对象具有很高的内聚性——因为它的方法有助于共同的任务——操纵字符串。

我不明白切割木材对 worker 对象本身有多大贡献。

关于oop - 面向对象设计问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3835299/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com