在类或对象中编写算法有什么缺点(在Scala中)?
class A { def algorithmImplementation (...) = { ... } } object A { def algorithmImplementation (...) = { ... } } 在哪种情况下应该使用该类,以及应该使用该对象(用于实现算法,例如Dijkstra-Algorithm,如上所示)? 做出这样的决定时应该考虑哪些标准? 目前,我无法真正看到使用课程的好处是什么. 解决方法
如果您只有一个实现,这可能主要是判断调用.你提到了Dijkstra的算法,该算法在图表上运行.现在,您可以编写该算法,将图形对象作为显式参数.在这种情况下,算法可能会出现在Graph singleton对象中.然后它可能被称为Graph.shortestPath(myGraph,fromNode,toNode).
或者您可以在Graph类中编写算法,在这种情况下,它不再将图形作为显式参数.现在它被称为myGraph.shortestPath(fromNode,toNode). 当存在一个主要参数(例如,图形)时,后一种情况可能更有意义,尤其是作为算法的一种上下文的一种.但它可能归结为您喜欢的语法. 但是,如果您有多个实现,那么平衡会更多地提示类方法,尤其是当选择哪个实现更好时,取决于表示的选择.例如,您可能有两个不同的shortestPath实现,一个在邻接矩阵上工作得更好,另一个在邻接列表上工作得更好.使用类方法,您可以轻松地为两个不同的表示形式提供两个不同的图表类,每个图表类都可以拥有自己的shortestPath实现.然后,当您调用myGraph.shortestPath(fromNode,toNode)时,即使您不知道myGraph是否使用邻接矩阵或邻接列表,您也会自动获得正确的实现. (这是OO的重点.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |