中介者模式是一种行为设计模式,它定义了一个对象来封装一组对象之间的交互。中介者使对象之间松耦合,从而使它们更容易扩展和修改。下面是一个使用 Java 编写中介者模式的示例代码,演示了计算器中的加法操作。
// 具体计算器操作
class CalculatorOperation {
private double firstNumber;
private double secondNumber;
private double result;
public CalculatorOperation(double firstNumber, double secondNumber) {
this.firstNumber = firstNumber;
this.secondNumber = secondNumber;
}
public void setResult(double result) {
this.result = result;
}
public double getResult() {
return result;
}
public void add() {
result = firstNumber + secondNumber;
}
}
// 具体中介者
class CalculatorMediator {
private CalculatorOperation calculatorOperation;
public CalculatorMediator(CalculatorOperation calculatorOperation) {
this.calculatorOperation = calculatorOperation;
}
public double performOperation(double firstNumber, double secondNumber) {
calculatorOperation = new CalculatorOperation(firstNumber, secondNumber);
calculatorOperation.add();
return calculatorOperation.getResult();
}
}
// 抽象计算器
abstract class Calculator {
protected CalculatorMediator calculatorMediator;
public Calculator() {
calculatorMediator = new CalculatorMediator(new CalculatorOperation());
}
public double add(double firstNumber, double secondNumber) {
return calculatorMediator.performOperation(firstNumber, secondNumber);
}
}
// 具体计算器实现
class CalculatorImpl extends Calculator {
public CalculatorImpl() {
super();
}
public static void main(String[] args) {
Calculator calculator = new CalculatorImpl();
double result = calculator.add(3, 4);
System.out.println("Result: " + result);
}
}
在这个示例中,我们定义了一个 CalculatorOperation 类,表示计算器中的具体操作(加法)。然后我们创建了一个 CalculatorMediator 类,表示中介者。中介者类包含一个 CalculatorOperation 对象,用于封装具体操作。我们还定义了一个 Calculator 抽象类,表示计算器。Calculator 类包含一个 CalculatorMediator 对象,用于调用具体操作。
在 CalculatorImpl 类的 main 方法中,我们创建了一个 Calculator 对象,并调用了 add 方法进行加法计算。最后,我们打印了计算结果。通过使用中介者模式,我们可以实现计算器操作的解耦,使得 Calculator 类可以轻松地扩展和修改操作。