我正在寻找一种整洁的方式来为我的几何集合实现一个很酷的设计模式。现在我的几何类型层次结构的顶部有一个名为Geometry
的特征。这个想法是让每个几何都继承特征,然后为特定类型的几何实现特定的代码。作为几何对象,这些几何图形当然需要实现各种方法。举例来说,计算到任何其他几何体的距离的能力 - 我称之为distanceTo
。最干净的方式做到这一点必须有在Geometry
性状的方法,像这样:几何类型层次结构的整洁设计模式
def distanceTo(geometry : Geometry) : Double
我的问题是这样的:我如何不必键入实现几何此方法(比如一个Rectangle
) - 检查存在的每个形状?是否有任何方便的方法将请求委托给各个几何体?
干杯,
您可能需要查看“双派”和“访客模式”。这些东西并不能让你实现N^2或者你的函数变体的需要,他们只是让工作变得更容易,让你以更有组织的方式去做。 –
双派遣和访问者模式是在像Java这样的语言中完成的一种好方法,它缺少(语言级别)多派遣*和*模式匹配。但访问者模式非常繁琐,需要大量的样板代码。 –