我在保持代码可维护性方面遇到了问题。 在我的问题中,我定义了一个“RenderableShape”,它是 2D 和 3D 形状的父接口(interface)(这两个是接口(interface))。
我有一个渲染器类,它“请求”一个 RenderableShape
来渲染数据。
3D 形状应返回一些数学公式或包裹在其周围的对象,而 2D 形状应返回它所包含的所有 2D 形状(三角形、圆形等)。
显然,'RenderableShape' 不能返回两个渲染器的两种类型。
我可以制作两种不同的方法,但这会迫使所有实现都实现一个无用的方法。
渲染器也可以询问形状是什么类型,但是之后你需要一个转换,这不仅是不必要的,而且在渲染中使用起来也太慢了。
此外,渲染代码本身不应该是形状,因为我想将所有渲染代码放在一个渲染器中,以允许不同的渲染器类型(Z-Buffer、raytracer 等)
解决此问题的可维护且可预测有效的方法是什么?
最佳答案
What would be a maintainable and preverably efficient approach to this problem?
这里应该应用的 OOP 原则之一是告诉,不要问!
将渲染器传递给 RenderableShape
并将其自身绘制到渲染器。
关于java - 如何防止在 java 接口(interface)中强制转换或创建子特定方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44870615/