简单工厂模式实现加减乘除法

1.创建运算的接口

public interface Operation {
    //提供计算两个数字的方法
    double getResult(double num1,double num2);

}

2.创建对应的加减乘除四个实现类

public class Addition implements Operation { //加法

    @Override
    public double getResult(double num1, double num2) {
        return num1+num2;
    }

}
public class Minus implements Operation { //减法

    @Override
    public double getResult(double num1, double num2) {
        return num1-num2;
    }

}
public class Multiplication implements Operation {//乘法

    @Override
    public double getResult(double num1, double num2) {
        return num1*num2;
    }

}
public class Division implements Operation {//除法

    @Override
    public double getResult(double num1, double num2) {
        return num1/num2;
    }
}

3.创建工厂类

public class OperationFactory {  //计算机的工厂类
    /*
     * 工厂模式 是我们最常用的实例化对象的模式!
     * 用工厂的方法替代new!
     * 虽然代码量没有减少  但是 提高了程序的扩展性!
     */
    public static  Operation  getOperation(String o){
        Operation operation=null; //多态
        switch (o) {
        case "+":
            operation=new Addition();
            break;
        case "-":
            operation=new Minus();
            break;
        case "*":
            operation=new Multiplication();
            break;
        case "/":
            operation=new Division();
            break;
        }
        return  operation;
    }
}

4.创建测试类 运行 测试结果

public class FactoryTest {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入第一个数字:");
        double num1 = scanner.nextInt();
        System.out.println("请输入运算符:");
        String operation = scanner.next();
        System.out.println("请输入第二个数字:");
        double num2 = scanner.nextInt();
        //创建运算的实例对象
        Operation o = OperationFactory.getOperation(operation);
        //输出结果
        System.out.println(o.getResult(num1, num2));
    }
}
时间: 2024-07-30 13:48:18

简单工厂模式实现加减乘除法的相关文章

简单工厂模式 实现加减乘除

1.创建运算的接口 public interface Operation { //提供计算两个数字的方法 double getResult(double num1,double num2); } 2.创建对应的加减乘除四个实现类 public class Addition implements Operation { //加法 @Override public double getResult(double num1, double num2) { return num1+num2; } } p

[Python设计模式] 第1章 计算器——简单工厂模式

写在前面的话 """ 读书的时候上过<设计模式>这一门课,当时使用的教材是程杰老师的<大话设计模式>,使用的语言是C#,学过课程之后初期深感面向对象思想的伟大,但是很少应用到实际开发中.后来我接触了Python,现在工作中用到最多的也是Python,或许是因为Python的便利性,我写的很多脚本/程序都还是面向过程编程,缺少面向对象的思想在里边.因此,我打算重读程杰老师的<大话设计模式>并用Python进行实践. ""&

简单工厂模式--加减乘除运算

学习来自<大话设计模式> 下面基于简单的<加减乘除运算>实例来讲讲实用简单工厂模式:<备注:以后根据认识的加深,可以添加和修改内容> 需求分析:希望程序提供“加减乘除”四种功能. 功能分析:四种功能都是并列的,相互独立的. 拓展分析:很有可能拓展新的功能,比如“开根运算”. 如何设计: 1.根据“功能分析”可以将四种功能都归并一个父类出来,然后创建四个子类继承它,并且提供空的方法(OC中模拟抽象方法或者虚函数),这四个子类分别都要继承并重写实现这个空方法.这样,一个抽象

简单工厂模式

目前正在看<大话设计模式>,写此系列的文章记录下学习的经过. 简单工厂模式 先看如下代码,使用面向对象的原理实现计算器功能 Operation运算类 1 public class Operation 2 { 3 private double numberA = 0; 4 private double numberB = 0; 5 6 public double NumberA 7 { 8 get { return numberA; } 9 set { numberA = value; } 10

《大话设计模式》学习笔记系列--1. 简单工厂模式

简单工厂模式实现了一种"工厂"概念的面向对象设计模式,它可以在不指定对象具体类型的情况下创建对象.其实质是定义一个创建对象的接口,但让实现这个接口的类来决定实例化具体类.工厂方法让类的实例化推迟到子类中进行. 以书本上的计算器程序为例,其UML描述如下: 图中,AddOperator, SubtactOpertor继承算式基类Operator,而CreateOperator则是负责创建一个操作类,而不指明具体的子类类型. 下面,我们来看代码: 首先操作积累: /// <summa

设计模式学习-简单工厂模式

1.什么是简单工厂模式 简单工厂模式属于类的创建模式,又叫做静态工厂模式,是通过专门建立一个类负责创建其他类的实例,被创建的类通常有着共同的父类,之所以称之为工厂,就是因为负责创建其他类的类能够根据传递参数的不同,产生不同的实例,使得程序满足松耦合.重用度高.易修改维护的特点. 2.简单工厂模式的实现 下面举例说明工厂模式,比如说我们要实现一个两个数的size运算,那么如何去设计能过做到我们上面说的特性.首先我们要设定一个运算的终极父类: #include <iostream> #includ

设计模式之创建型模式—— 1.1 简单工厂模式

<?php                  /** * 1.1 简单工厂模式 * * 解决的问题: *  如何解决多个类实例化对象的问题. *  注意:因为是简单工厂模式,所以要实例 *    化的类不能太多,否则请使用1.2节 *    的工厂方法模式. * * 解决方案: *  建立一个工厂(即一个工厂类),通过参数的 *  传递动态决定应该创建哪一个产品类(这些 *  产品类继承自一个父类或接口)的实例. *  *  * 该模式中包含三种角色: *  注:这里的角色指的就是类! *  1

1.python实现设计模式:简单工厂模式

简单工厂模式 1.什么是简单工厂模式? 给定一种输入,通过工厂实例出其合适的对象,称为简单工厂模式 2.逐步引入工厂模式 2.1 小文去面试,公司要求用任意一种面对对象的语言实现了一个计算器程序,功能只是简单的两个数相加或者减,乘,除 他的代码如下 def main(): num1 = int(input('The first number is:')) num2 = int(input('The second number is:')) op = input('The operator is(

工厂模式——简单工厂模式

工厂模式分三类:简单工厂模式.工厂方法模式.抽象工厂模式. 首先介绍比较简单一种工厂模式——简单工厂模式. 我们以计算器作为一个例子来说明工厂模式到底是什么.作为一个几年前大一从C语言起步的初级程序员,到现在写代码的思维还是停留在结构化编程,虽然Java学了有几年了,总是说面向对象面向对象.但是让实现一个计算器的程序,估计大部分人都会以C语言式的结构化编程来写,几个if语句或者一个switch来搞定.我也同样不例外,为了提高自己的编程水平,所以一点点开始学设计模式.其实在很多开源代码里也有很多经