设计模式之简单工厂模式

SmilingFish 2018-10-13 原文

设计模式之简单工厂模式

简单工厂模式,也叫静态工厂模式,即由一个静态工厂类来统一创建所需要的实例对象。

本例中,将主要实现加减乘除计算。

第一步,定义抽象基类Operation

 1 /**
 2  * @author abo
 3  * @title Operation
 4  * @ProjectName Test
 5  * @Description: 运算类的基类,定义了两个运算数
 6  * @CreateDate 2018-10-13 14:15
 7  */
 8 public abstract  class Operation {
 9     private double numberA=0;
10     private double numberB=0;
11 
12     public double getNumberA() {
13         return numberA;
14     }
15 
16     public void setNumberA(double numberA) {
17         this.numberA = numberA;
18     }
19 
20     public double getNumberB() {
21         return numberB;
22     }
23 
24     public void setNumberB(double numberB) {
25         this.numberB = numberB;
26     }
27 
28     public abstract double getResult();
29 }

第二步:定义加减乘除四个子类继承于Operation类

OperationAdd(加法运算子类)

 1 /**
 2  * @author abo
 3  * @title OperationAdd
 4  * @ProjectName Test
 5  * @Description: 继承操作类,实现加法运算
 6  * @CreateDate 2018-10-13 14:17
 7  */
 8 public class OperationAdd extends Operation {
 9 
10     @Override
11     public double getResult() {
12         double result = 0;
13         result = getNumberA()+getNumberB();
14         return result;
15     }
16 }

OperationSub(减法运算子类)

 1 /**
 2  * @author abo
 3  * @title OperationSub
 4  * @ProjectName Test
 5  * @Description: 继承操作类,实现减法运算
 6  * @CreateDate 2018-10-13 14:22
 7  */
 8 public class OperationSub extends Operation {
 9     @Override
10     public double getResult() {
11         double result = 0;
12         result = getNumberA()-getNumberB();
13         return result;
14     }
15 }

OperationMul(乘法运算子类)

 1 /**
 2  * @author abo
 3  * @title OperationMul
 4  * @ProjectName Test
 5  * @Description: 继承操作类,实现乘法运算
 6  * @CreateDate 2018-10-13 14:23
 7  */
 8 public class OperationMul extends Operation {
 9     @Override
10     public double getResult() {
11         double result= 0;
12         result = getNumberA()*getNumberB();
13         return result;
14     }
15 }

OperationDiv(除法运算子类)

 1 /**
 2  * @author abo
 3  * @title OperationDiv
 4  * @ProjectName Test
 5  * @Description: 继承操作类,实现除法运算
 6  * @CreateDate 2018-10-13 14:24
 7  */
 8 public class OperationDiv extends Operation {
 9     @Override
10     public double getResult() {
11         double result=0;
12         result = getNumberA()/getNumberB();
13         return result;
14     }
15 }

OperationFactory(运算工厂类)

 1 /**
 2  * @author abo
 3  * @title OperationFactory
 4  * @ProjectName Test
 5  * @Description: 简单运算工厂类,用于创建操作类对象
 6  * @CreateDate 2018-10-13 14:26
 7  */
 8 public class OperationFactory {
 9     public static Operation createOperate(String operate){
10         Operation operation = null;
11         switch(operate){
12             case "+":
13                 operation=new OperationAdd();
14                 break;
15             case "-":
16                 operation=new OperationSub();
17                 break;
18             case "*":
19                 operation=new OperationMul();
20                 break;
21             case "/":
22                 operation=new OperationDiv();
23                 break;
24         }
25         return operation;
26     }
27 }

客户端程序Test类

 1         Scanner scanner = new Scanner(System.in);
 2         System.out.println("请输入第一个数字:");
 3         double numberA = scanner.nextDouble();
 4         System.out.println("请输入第二个数字:");
 5         double numberB = scanner.nextDouble();
 6         System.out.println("请输入操作符:如+、-、*、/");
 7         String operator = scanner.next();
 8         try {
 9             Operation oper;
10             oper = OperationFactory.createOperate(operator);
11             oper.setNumberA(200);
12             oper.setNumberB(4);
13             System.out.println("结果为:"+oper.getResult());
14         } catch (Exception e) {
15             e.printStackTrace();
16             System.out.println("运算结果出错!");
17         }

 

posted on 2018-10-13 23:37 余露倾晨 阅读() 评论() 编辑 收藏

 

 
版权声明:本文为SmilingFish原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/SmilingFish/p/9784794.html

设计模式之简单工厂模式的更多相关文章

  1. 设计模式(九)_代理模式

    不知不觉今天已经7月底了,时间过得真快,这个月真热,这篇文章主要来介绍代理模式。 概述 代理模式为另一个对象提 […]...

  2. 设计模式

    设计模式 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、 […]...

  3. LVOOP设计模式在路上(三)– 工厂方法模式

    LVOOP系列转到微信公众号持续更新,这里将同步更新链接:https://mp.weixin.qq.com/s […]...

  4. 设计模式(一)_单例模式

    计划6月份学习设计模式,一共23种设计模式,先6月份学1/4吧,学习6篇,今天就以最简单的单例模式进行学习 概 […]...

  5. 设计模式——策略模式

    定义 定义算法族,分别封装起来,让他们之间可以互相替换,此模式让 算法的吧变化独立于使用算法的客户 UML 参 […]...

  6. 如果人生也能存档——C#中的备忘录模式

    如果人生也能存档——C#中的备忘录模式 大家好,老胡又和大家见面了。首先承认今天的博客有点标题党了,人生是没有 […]...

  7. 写给那些想要自学成才的java程序员

    一:我的大学:第一年泡在图书馆看杂七杂八的书,跟学习毫无关系。第二年疯狂打LOL,从白银打到黄铜(黄铜守门员) […]...

  8. 设计模式——代理模式(超级详细的代理模式讲解)

    本文首发于cdream的个人博客,点击获得更好的阅读体验! 欢迎转载,转载请注明出处。 本文主要对设计模式中的 […]...

随机推荐

  1. Matlab中sortrows函数解析

    一.问题来源   返回检索到的数据(按相关度排序)在原始数据中的索引。 二.问题解析   x = [1 4 3 […]...

  2. 8种特殊建库测序

    8种特殊建库测序 1. RNA-seq 2. 外显子测序  3. small RNA-seq 4. 单细胞DN […]...

  3. [WPF自定义控件库]了解如何自定义ItemsControl

    1. 前言 对WPF来说ContentControl和ItemsControl是最重要的两个控件。 顾名思义, […]...

  4. 电子书阅读软件的功能

    作者:马健邮箱:stronghorse_mj@hotmail.com发布:2015.01.03 从Comics […]...

  5. 深入探索Java设计模式(四)之享元模式

    深入探索Java设计模式(四)之享元模式 享元模式适用于需要大量相同类型对象的情况。在此,设计布局可以减少创建 […]...

  6. RGB颜色与16进制颜色的换算方法(转载)

    table tbody tr:nth-child(2n) { background: none left to […]...

  7. MySQL命令行登录的例子

    环境:MySQL Sever 5.1 + MySQL命令行工具 问题:MySQL命令行登录 解决: 命令 行登 […]...

  8. HBase篇(4)-你不知道的HFile

    【每日五分钟搞定大数据】系列,HBase第四篇 这一篇你可以知道, HFile的内部结构? HBase读文件细 […]...

展开目录

目录导航