日期:2014-05-20  浏览次数:20936 次

在做几何体拓扑关系时的设计问题.
我现在想做一个针对各种几何体的拓扑关系的功能块,主要就是针对点,线,面的之间的拓扑判断.
怎么设计比较好.

有一个几何体接口IGeometry,有三个几何体类Point,Line,Polygon.

我想先定义一个拓扑关系的接口,IRelationalOperator,里面方法定义类似bool Equals(IGeometry pGeometry);然后在定义PointRelationalOperator,LineRelationalOperator,和PolygonRelationalOperator三个具体类,继承这个接口.

然后再定义一些具体类PointPointRelationalOperator,PointLineRelationalOperator,PointPolygonRelationalOperator,LinePointRelationalOperator,LineLineRelationalOperator,LinePolygonRelationalOperator,等方法类似public bool Equals(Point pPoint1,Point pPoint2);.
然后让上面继承IRelationalOperator接口的具体类去调用这些具体类.


最后在IGeometry保存一个IRelationalOperator的接口.

不知道还有没有什么更好的设计方案.

本来想画UML图的,但家里的电脑没有装viso.

------解决方案--------------------
顶一下,貌似网络板块吧
------解决方案--------------------
可以这样设计,看看设计模式。
------解决方案--------------------
可使用工厂模式,通过接口实现
------解决方案--------------------
学习,帮顶!
------解决方案--------------------
我觉得有一个问题:拓扑的“关系”不应该是一个“实体”,而应该是一个“判断”,是不是变成一个函数库的形式会更好一点呢?