我需要在python中开发一个几何库,描述3d空间中的点,线和平面,以及各种几何操作。 Related to my previous question
设计中的主要问题是这些实体是否应具有身份。我想知道是否有一个类似的库(用另一种语言开发)从中获取灵感,选择的设计是什么,特别是一个选择与另一个选择的原因。
答案 0 :(得分:1)
我不熟悉其他库,但似乎有3d点应该是(不可变的)值对象。 - 允许在几个容器(线,平面等)之间共享一个点 - 避免防守吸气者和制定者 - 在现实生活中,3d点没有身份。
另外,Josh Bloch说(见http://www.infoq.com/presentations/effective-api-design )他们在Java标准库的设计中所犯的错误之一是他们没有将Size类定义为不可变的。