gpt4 book ai didi

java - 寻找设计模式

转载 作者:行者123 更新时间:2023-12-02 00:54:56 26 4
gpt4 key购买 nike

我没有研究过设计模式,但我敢打赌,有一个设计模式可以满足我需要做的事情。我在几棵树上运行一组不同的算法。它们都实现了一个接口(interface):

public interface DistanceMetric {
public double distance(AbstractTree<String> t1, AbstractTree<String> t2);
}

public class concreteDistanceAlgorithmV1 implements DistanceMetric{

public double distance(AbstractTree<String> t1, AbstractTree<String> t2){
// algorithm methods
return distance;
}
}

但是,突然我现在需要每个算法的两个版本,一个如上所述,第二个是对第一棵树进行预处理的变体:

public interface DistanceMetricType2 {
public double distance(AbstractTree<String> t);
}

public class concreteDistanceAlgorithmV2 implements DistanceMetricType2{

private Object transformation1;

public concreteDistanceAlgorithmV2(AbstractTree<String> t1){
transformation1 = process(t1);
}

public double distance(AbstractTree<String> t2){

Object transformation2 = process(t2);
//algorithm involving both transformations
return distance;
}
}

一定有比为每个算法创建两个类更好的方法吗?这是策略模式的用途还是类似的?我如何修改我所拥有的内容以更好地利用良好的设计原则?

最佳答案

如果您需要在运行时选择算法,请查看 strategy pattern 。策略模式提供了所有算法都实现的接口(interface)。然后,您可以实例化适当的算法并调用其execute()方法。

如果您需要改变算法的某些部分,请查看 template method pattern 。在模板方法中,对算法的修改会覆盖适当的方法,以提供实现完全相同目标的替代方法。这通常是通过继承抽象类来完成的。

关于java - 寻找设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1246536/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com