博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单工厂
阅读量:6827 次
发布时间:2019-06-26

本文共 2600 字,大约阅读时间需要 8 分钟。

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、Ευχαριστ

 

转载于:https://www.cnblogs.com/YUJIE666/p/9898280.html

你可能感兴趣的文章