要解决的问题:为图的所有节点赋予优先级(int 值)。有一个带有属性 Graph 的 DAG 类(来自 JGraphT 库的 DirectedGraph 类型)。而且,必须有不同的算法来分配优先级,并且将来必须可以在不修改现有代码的情况下添加新的算法。首先创建 DAG,然后用户可以选择使用哪种算法(使用 GUI 中的 ComboBox)。用户必须能够随时更改算法。
方法一:为算法开发一个接口(算法),并让所有算法实现该接口。在 DAG 类中,添加一个新属性:
Algorithm myAlgo;
每次用户在 GUI 上选择不同的算法时,实例化该算法:
myAlgo = new AlgorithmNumberX;
方法二:独立编写优先级任务(不作为 DAG 的属性),使用静态方法对 DAG 的节点进行优先级排序,将 DAG 作为参数发送并返回修改后的 DAG。
每种方法都有哪些优点?