我想在地理信息系统上工作,我正处于构思阶段,我有这些道路(方法)。
我正在使用Java,我的问题是:是否最好为每个类创建一个扩展抽象类("way")的类?或者最好只在一个类中创建主题,并使用属性int highwayType
来区分它们,因为知道每个类都有自己的绘图功能和绘图的缩放级别?
发布于 2013-11-23 12:42:25
不要使用整数来定义类的类型。面向对象的编程使它更容易实现。
您应该有一个抽象类高速路,所有特定的类都是从它继承的,例如class PrimaryHighway extends Highway
。抽象类将声明一个方法render()
,然后所有子类都会用它们的特定行为覆盖该方法。
这样,在使用高速路对象时,您就可以对子类- and中的实际行为进行建模,而不必找出所使用的类,因为所有公路都支持render()
。
您还可以创建一个接口Drawable
,所有类都实现这个接口。接口需要在实现它的每个类中定义一个方法render()
。好处是,所有可绘制的东西都可以使用这个接口,对于所有不是高速公路的可绘制的东西,您就不必再做同样的事情了。
发布于 2013-11-23 12:52:16
通过这个链接
(设计)
您的类应该只有一个单响应。使用整数和如果其他将使它很难测试和维护。你应该继承遗产。
发布于 2013-11-25 18:58:54
另一方面,您可能希望将其提升到一个级别,而不是尝试在某些类层次结构中对每一种可能的地理特征类型建模。我倾向于避免创建大量的类层次结构,特别是在没有多重继承的Java中。光是高速公路你就上了二十节课。我认为在这条路上,疯狂等待着你。
您列出了一系列功能,这些特性似乎反映了OpenStreetMap提供的一些特性。为什么不看看现有的基于Java的OSM功能的源代码,比如Java OpenStreetMap编辑器,并向多年来一直在这样做的人学习如何将地理特性建模为对象上的属性集合。
更好的是,与其发明您自己的基于Java的地理信息系统--尽管这在学习地理信息系统、Java或面向对象编程方面可能具有指导意义--不如选择一个现有的项目并为改进该项目或其他一些做出贡献。
https://stackoverflow.com/questions/20162300
复制相似问题