gpt4 book ai didi

java - 不同输入参数数量的算法的最佳设计模式

转载 作者:行者123 更新时间:2023-12-02 11:12:27 25 4
gpt4 key购买 nike

我正在尝试帮助我的 friend 完成他的项目,同时我看到他实现了 2 个几乎相似的算法。

我的第一个想法是使用模板模式。

public abstract class Template {
calculate();
save();
}

等等。然而,在第二种算法中,calculate()save() 需要额外的参数。两种算法中两种方法内的代码有 90% 是重复的。

假设在第一个算法中我只需要经度,而在第二个算法中我需要经度和纬度。

因此,使用模板模式的唯一方法是创建一些具有经度和纬度的对象,并将其传递到两种算法中。但是,我不喜欢这个解决方案,因为第二个参数在第一个算法中将为“空”。

也许我没有找到更好、更干净的方法来解决这个问题?

最佳答案

您可以拥有模板,但可以传递计算器类型的对象并拥有具有不同数量参数的计算器,例如这样做:

public class Template {
calculate(ICalculator calculator);
}

interface ICalculator(){
double calculate();
}

然后你就可以拥有不同类型的计算器:

class OneParameterCalculator implements ICalculator{

private final double latitude;

public OneParameterCalculator(double latitude){ this.latitude=latitude; }

public double calculate(){
....
}
}

class TwoParameterCalculator implements ICalculator{

private final double latitude;
private final double longtitude;

public TwoParameterCalculator (double latitude,double longtitude){ this.latitude=latitude; this.longtitude=longtitude; }

public double calculate(){
....
}
}

然后您可以使用模板实例,例如:

myTemplate.calculate(new OneParameterCalculator(latitudeValue));

这样您就可以将计算与模板分开。您可以从那里进行改进 - 例如,您可以共享计算器,而不是每次都创建一个新实例。

关于java - 不同输入参数数量的算法的最佳设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50529342/

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