2018-11-02 20:27:28开始写

Operation.java类
- 1 package StaticFactoryMethedPattern;
- 2
- 3 public abstract class Operation {
- 4 public abstract float getResult(float firstNum, float secondNum);
- 5 }
AddOperation.java类
- 1 package StaticFactoryMethedPattern;
- 2
- 3 public class AddOperation extends Operation {
- 4
- 5 @Override
- 6 public float getResult(float firstNum, float secondNum) {
- 7 // TODO Auto-generated method stub
- 8 return firstNum + secondNum;
- 9 }
- 10
- 11 }
共有加减乘除四个来,这就举出一个
OperationFactory.java类
- 1 package StaticFactoryMethedPattern;
- 2
- 3 public class OperationFactory {
- 4 public static Operation getOperation(String quotaFlag) {
- 5 Operation o = null;
- 6 switch (quotaFlag) {
- 7 case "+" :
- 8 o = new AddOperation();
- 9 break;
- 10 case "-" :
- 11 o = new SubOperation();
- 12 break;
- 13 case "*" :
- 14 o = new MulOperation();
- 15 break;
- 16 case "/" :
- 17 o = new DivOperation();
- 18 break;
- 19 default :
- 20 break;
- 21 }
- 22 return o;
- 23 }
- 24 }
Computer.java类 这是主类
- 1 package StaticFactoryMethedPattern;
- 2
- 3 import java.util.Scanner;
- 4
- 5 public class Computer {
- 6
- 7 public static void main(String[] args) {
- 8 // TODO Auto-generated method stub
- 9 Scanner scan = new Scanner(System.in);
- 10 System.out.println("请输入第一个数字:");
- 11 float firstNum = scan.nextFloat();
- 12 System.out.println("请输入第二个数字:");
- 13 float secondNum = scan.nextFloat();
- 14 System.out.println("请输入运算符号:");
- 15 String countQuota = scan.next();
- 16 System.out.println(count(firstNum, secondNum, countQuota));
- 17 }
- 18 private static float count(float firstNum, float secondNum, String countQuota) {
- 19 Operation operation = OperationFactory.getOperation(countQuota);
- 20 return operation.getResult(firstNum, secondNum);
- 21 }
- 22
- 23 }
说明:简单工厂也是静态工厂方法模式(Static FactoryMethod Pattern)
共需要1个抽象类、n个继承抽象类的具体实现的类(如加减乘除)、1个加工类(通过switch-case语句)、1个主方法调用。
在主方法中有
- Operation operation = OperationFactory.getOperation(countQuota);向上转型1次(抽象类)
- return operation.getResult(firstNum, secondNum);最后调用子类方法返回结果
谢谢、Thank you、Salamat Do(撒拉玛特朵)、あリがCám o*n(嘉蒙)とゥ(阿里嘎都)、????? (勘三哈咪瘩)、terima Kasih(得力马卡系)、kob-khun(寇布库恩)、dhanyavaad(达尼阿瓦德)、toda(透达)、te?ekkür ederim(特谢库尔埃戴里姆)、Dzie,kuje(以库以而)、Spasibo(思巴喜柏)、Danke(但可)、shokran(休克朗)、Obrigada(欧布哩嘎搭)、dank u(当Q)、Merci(梅呵西)、Gracias(格拉喜亚思)、Grazie(格啦姬)、Благодарности、Tak、Kiitos、Díky、Hvala、Mul?umesc、Takk、Ευχαριστ