2010-03-16 22 views
0

我需要在Python中開發一個幾何庫,描述三維空間中的點,線和平面以及各種幾何操作。 Related to my previous question價值對象與否的3d點?

設計中的主要問題是這些實體是否應該有身份。我想知道是否有一個類似的圖書館(用另一種語言開發)從中獲取靈感,選擇什麼樣的設計,尤其是一種選擇與另一種選擇的原因。

回答

1

我不熟悉其他庫,但似乎有3d點應該是(不可變的)值對象。 - 允許在多個容器(線條,飛機等)之間共享一個點 - 避免防禦性的獲取者和設置者 - 在現實生活中,3d點沒有身份。另外,Josh Bloch說(參見http://www.infoq.com/presentations/effective-api-design )他們在設計Java標準庫時犯的一個錯誤是他們沒有將Size類定義爲不可變的。