java运用面向对象的思想实现计算器的小程序

其实,觉得最重要的就是这里的这样的一段核心代码。

package org.lenovo.demo;

public class OperationFactory {
	public static Operation createOperation(String operate){
		Operation oper = null;
		switch(operate){
		case "+":
			oper = new AddOperation();
			break;
	
		case "-":
			oper = new SubOperation();
			break;
			
		case "*":
			oper = new MulOperation();
			break;
			
		case "/":
			oper = new DivOperation();
			break;
		}
		return oper;		
	}
}

在上面的这一段代码中,其中Operation是定义的一个接口,如下所示:


package org.lenovo.demo;

public interface Operation {
	public double getResult(double numA , double numB);
}

而对于加法、减法、乘法、除法以及取余等操作,都是分别定义的一个类,而对于这个类又实现了Operation接口。如下所示:

package org.lenovo.demo;
public class AddOperation implements Operation {
	public double getResult(double numA, double numB){
		return numA + numB;
	}
}

所以,对于OperationFactory类中,通过对于操作符号的一个switch.....case判断,来选择相应的子类进行实例化接口的操作。而在Main方法中,对于此功能的核心调用代码如下:

oper = OperationFactory.createOperation(operate);

result = oper.getResult(numA, numB);

其中对于oper对象、operate(String)字符串、以及double类型的numA, numB在之前已经定义好了。


小结:关于Java多态性的描述,可以理解为一个接口,多个方法。当我们需要实例化此接

           口的时候,通过具体的情况用相应的子类来实例化。这样被实例化的对象所调用的方

           法就是就是子类所覆写的方法,从而来达到了这一要求。而在这个程序中,如果我们

          需要定义一个取模的操作,也是只需要定义一个类实现Operation接口,然后

          在OperationFactory中,添加一段判断代码即可。


你可能感兴趣的:(Java)