经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Java » 查看文章
简单工厂
来源:cnblogs  作者:51人去楼空  时间:2018/11/3 10:08:09  对本文有异议

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


 


Operation.java类

  1. 1 package StaticFactoryMethedPattern;
  2. 2
  3. 3 public abstract class Operation {
  4. 4 public abstract float getResult(float firstNum, float secondNum);
  5. 5 }

AddOperation.java类

  1. 1 package StaticFactoryMethedPattern;
  2. 2
  3. 3 public class AddOperation extends Operation {
  4. 4
  5. 5 @Override
  6. 6 public float getResult(float firstNum, float secondNum) {
  7. 7 // TODO Auto-generated method stub
  8. 8 return firstNum + secondNum;
  9. 9 }
  10. 10
  11. 11 }

共有加减乘除四个来,这就举出一个


 

OperationFactory.java类

  1. 1 package StaticFactoryMethedPattern;
  2. 2
  3. 3 public class OperationFactory {
  4. 4 public static Operation getOperation(String quotaFlag) {
  5. 5 Operation o = null;
  6. 6 switch (quotaFlag) {
  7. 7 case "+" :
  8. 8 o = new AddOperation();
  9. 9 break;
  10. 10 case "-" :
  11. 11 o = new SubOperation();
  12. 12 break;
  13. 13 case "*" :
  14. 14 o = new MulOperation();
  15. 15 break;
  16. 16 case "/" :
  17. 17 o = new DivOperation();
  18. 18 break;
  19. 19 default :
  20. 20 break;
  21. 21 }
  22. 22 return o;
  23. 23 }
  24. 24 }

Computer.java类 这是主类


  1. 1 package StaticFactoryMethedPattern;
  2. 2
  3. 3 import java.util.Scanner;
  4. 4
  5. 5 public class Computer {
  6. 6
  7. 7 public static void main(String[] args) {
  8. 8 // TODO Auto-generated method stub
  9. 9 Scanner scan = new Scanner(System.in);
  10. 10 System.out.println("请输入第一个数字:");
  11. 11 float firstNum = scan.nextFloat();
  12. 12 System.out.println("请输入第二个数字:");
  13. 13 float secondNum = scan.nextFloat();
  14. 14 System.out.println("请输入运算符号:");
  15. 15 String countQuota = scan.next();
  16. 16 System.out.println(count(firstNum, secondNum, countQuota));
  17. 17 }
  18. 18 private static float count(float firstNum, float secondNum, String countQuota) {
  19. 19 Operation operation = OperationFactory.getOperation(countQuota);
  20. 20 return operation.getResult(firstNum, secondNum);
  21. 21 }
  22. 22
  23. 23 }

说明:简单工厂也是静态工厂方法模式(Static FactoryMethod Pattern)

共需要1个抽象类、n个继承抽象类的具体实现的类(如加减乘除)、1个加工类(通过switch-case语句)、1个主方法调用。

在主方法中有

  1. Operation operation = OperationFactory.getOperation(countQuota);向上转型1次(抽象类)
  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、Ευχαριστ

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号