简单工厂模式又 叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
涉及7个类。
1、Operation 类 抽象类
package factory;
public abstract class Operation {
public abstract float getRrsult(float firstNumber,float secondNumber); --单词写错Result
}
2、+类 继承Operation 类
package factory;
public class Jia extends Operation {
@Override
public float getRrsult(float firstNumber, float secondNumber) {
// TODO Auto-generated method stub
return firstNumber+secondNumber;
}
}
3、- 类 继承 Operation 类
package factory;
public class Jian extends Operation {
@Override
public float getRrsult(float firstNumber, float secondNumber) {
// TODO Auto-generated method stub
return firstNumber-secondNumber;
}
}
4、* 类 继承 Operation 类
package factory;
public class Cheng extends Operation {
@Override
public float getRrsult(float firstNumber, float secondNumber) {
// TODO Auto-generated method stub
return firstNumber*secondNumber;
}
}
5、/ 类 继承 Operation 类
package factory;
public class Chu extends Operation {
@Override
public float getRrsult(float firstNumber, float secondNumber) {
// TODO Auto-generated method stub
return firstNumber/secondNumber;
}
}
6、Factory 类:用来匹配生成 ±*/方法。
package factory;
public class Factory {
public static Operation getOperation(String Flag){
Operation o = null ;
switch (Flag) {
case "+": o = new Jia() ;break;
case "-": o = new Jian();break;
case "*": o = new Cheng();break;
case "/": o = new Chu();break;
default: break;
}
return o ;
}
}
7、计算器(JiSuanQi )类
package factory;
import java.util.Scanner;
public class JiSuanQi {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入第一个数字:");
float firstNum = in.nextFloat();
System.out.println("请输入运算符号:");
String Flag = in.next();
System.out.println("请输入第二个数字:");
float secondNum = in.nextFloat();
System.out.println(count(firstNum,secondNum,Flag));
}
private static float count(float firstNum, float secondNum, String Flag) {
// TODO Auto-generated method stub
//通过工厂类获取对象
Operation operation = Factory.getOperation(Flag);
return operation.getRrsult(firstNum, secondNum);
}
}
友情链接:参考文章