我正在创建一个非常常见、非常简单的形状库。Sphere 将是一个成员,以及环面,等等。Torus 有两个半径场,而 sphere 有一个;修改后的行为是我们可以通过更改函数的实现来提供的东西,以包括半径,当然,添加额外的半径字段。Torus 很常见,将这种行为包含在永久库中是有益的。
另一方面,“WigglyTorus”,一个半径摆动的圆环,不会成为永久图书馆的成员。相反,匿名类更有用;它也可以存储所需的行为,但在外部,它被视为普通环面。
问题就在于此。如果我想克隆一个圆环,我的新圆环可以表现得完全一样。如果我想克隆一个 WigglyTorus,复制的行为将模仿圆环的行为,而我根本没有克隆。但是 WigglyTorus 的两种用途并不能证明将 WigglyTorus 添加为永久类是合理的。
我已经考虑过解决方法,但没有一个看起来很优雅。我觉得我错过了一些关于 Java 或 OOP 的重要内容。