gpt4 book ai didi

Java - 接口(interface)内的实现实例

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:51:39 25 4
gpt4 key购买 nike

在我的项目中,我需要为“加”、“减”、“乘”等各种 Java 数学运算符创建对象。这些运算符应该是单例的。

这就是我要做的。我将 Math Operator 定义为一个接口(interface),并将这些实现放在其中,因为我不想为每个运算符定义单例类。

public interface MathOperator {


double operate(double a, double b);

MathOperator ADD = new MathOperator(){

@Override
public double operate(double a, double b) {
return a + b;
}

};

MathOperator SUBSTRACT = new MathOperator(){

@Override
public double operate(double a, double b) {
return a - b;
}

};

}

当我谷歌这个时,我没有看到太多这样的用法。所以我想知道这是否是一种好的做法,是否有更好、更优雅的方法?

最佳答案

我会像 smt 那样做

1)定义接口(interface)

interface MathOperator {
double operate(double a, double b);
}

2) 比在枚举中有一些通用的实现(更少的代码)

enum MathOperators implements MathOperator {
ADD {
@Override
public double operate(double a, double b) {
return a + b;
}
},

SUBTRACT {
@Override
public double operate(double a, double b) {
return a - b;
}
}
}

3) 或公共(public)静态成员(更干净的解决方案)。

class MathOperators {
public static MathOperator ADD = new MathOperator() {
@Override
public double operate(double a, double b) {
return a + b;
}
};
public static MathOperator SUBTRACT = new MathOperator() {
@Override
public double operate(double a, double b) {
return a - b;
}
};
}
  • 可以在不改变MathOperators的情况下创建新的MathOperator
  • 拥有用于常见操作的良好 API
  • 不应该写单例
  • 有漂亮干净的界面

关于Java - 接口(interface)内的实现实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9173001/

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