java设计并实现符合单一职责原则、里氏替换原则、组合复用原则的计算器演示系统代码‘
时间: 2024-02-02 14:02:50 浏览: 18
非常感谢您的问题。以下是一个简单的Java计算器演示系统的示例代码,它符合单一职责原则、里氏替换原则和组合复用原则。
public interface IOperation {
public double operate(double a, double b);
}
public class AddOperation implements IOperation {
@Override
public double operate(double a, double b) {
return a + b;
}
}
public class SubtractOperation implements IOperation {
@Override
public double operate(double a, double b) {
return a - b;
}
}
public class MultiplyOperation implements IOperation {
@Override
public double operate(double a, double b) {
return a * b;
}
}
public class DivideOperation implements IOperation {
@Override
public double operate(double a, double b) {
if (b == 0) {
throw new IllegalArgumentException("Cannot divide by 0");
}
return a / b;
}
}
public class Calculator {
private IOperation operation;
public Calculator(IOperation operation) {
this.operation = operation;
}
public double calculate(double a, double b) {
return operation.operate(a, b);
}
}
在这个示例中,我们定义了一个IOperation接口,它代表着所有可执行的操作,例如加法、减法、乘法和除法。我们还创建了几个实现了IOperation接口的类,每个类代表一个具体的操作。每个操作类只能执行一种操作,这符合单一职责原则。
我们还创建了一个Calculator类,它包含一个IOperation实例。Calculator类通过调用其IOperation实例的operate方法来执行相应的操作。由于我们使用接口注入Calculator类的操作,这符合里氏替换原则,并且我们还避免了硬编码操作。
最后,我们将操作实例注入Calculator的构造函数中,这符合组合复用原则,因为我们将可复用的操作功能封装在一个单独的类中,并将其注入到需要它的地方。
希望这个例子能够帮助您理解如何使用单一职责原则、里氏替换原则和组合复用原则编写更好的代码。