zoukankan      html  css  js  c++  java
  • Java从零开始学十七(简单工厂)

    简单工厂的实现

    实现一个计算器:要求输入2个数,和运算符,得到结果

    Operation类

    package com.pb.demo1;
    
    public class Operation {
        private double num1;
        private double num2;
        
        public double getResult(double num1,double num2){
            double result=0;
            return result;
        }
    
        public double getNum1() {
            return num1;
        }
    
        public void setNum1(double num1) {
            this.num1 = num1;
        }
    
        public double getNum2() {
            return num2;
        }
    
        public void setNum2(double num2) {
            this.num2 = num2;
        }
        
    }

    加,减,乖,除,取模

    package com.pb.demo1;
    /*
     * 加法
     */
    public class AddOperation extends Operation {
    
        @Override
        public double getResult(double num1, double num2) {
            
            return (num1+num2);
        }
    
    }
    package com.pb.demo1;
    /*
     * 减法
     */
    public class Substruction extends Operation {
    
        @Override
        public double getResult(double num1, double num2) {
        
            return (num1-num2);
        }
    
        
    }
    package com.pb.demo1;
    /*
     * 乖法
     */
    public class Multiplication extends Operation {
    
        @Override
        public double getResult(double num1, double num2) {
            
            return (num1*num2);
        }
        
    
    }
    package com.pb.demo1;
    /*
     * 除法
     */
    public class Division extends Operation {
    
        @Override
        public double getResult(double num1, double num2) {
            
            return (num1/num2);
        }
    
        
    }
    package com.pb.demo1;
    /*
     * 取余
     */
    public class ModeOperation extends Operation {
    
        @Override
        public double getResult(double num1, double num2) {
            
            return (num1%num2);
        }
        
    
    }

    工厂类:

    package com.pb.demo1;
    /*
     * 简单工厂类
     */
    public class Factory {
       //返回类型 为类对象
        public Operation getResult(String op){
            Operation operation=null;
            //根据操作符来声明对象并返回
            switch (op){
            case "+":
                operation=new AddOperation();
                break;
            case "-":
                operation=new Substruction();
                break;
            case "*":
                operation=new Multiplication();
                break;
            case "/":
                operation=new Division();;
                break;
            case "%":
                operation=new ModeOperation();
                break;
                default:
                    System.err.println("输入运算符不正确!");
                    break;
            }
            //返回生成的对象
            return operation;
        }
    }

    测试类:

    package com.pb.demo1;
    
    import java.util.InputMismatchException;
    import java.util.Scanner;
    
    /*
     * 计算器
     */
    public class Demo1 {
    
        public static void main(String[] args) {
            //声明扫描器类型变量
            Scanner  input =new Scanner(System.in);
            //声明工厂对象
            Factory fac=new Factory();
        try{
            System.out.println("请输入第一个整数:");
            double num1=input.nextDouble();
            System.out.println("请输入第二个整数:");
            double num2=input.nextDouble();
            System.out.println("请输运算符:+、-、*、/、%");
            String op=input.next();
            //接收工厂的返回对象 工厂根据操作符生成的对象
            Operation operation=fac.getResult(op);
            //接收计算结果
                double result=operation.getResult(num1, num2);
                //显示计算结果
                System.out.println(num1+"与"+num2+"的运行结果:"+result);
        }catch(InputMismatchException e){
            System.err.println("输入类型不正确!");
        
        }catch(Exception e){
            e.printStackTrace();
        }
        }
    }
  • 相关阅读:
    1024. Palindromic Number (25)
    Android 它们的定义View
    Acdreamoj1116(Gao the string!)弦hash+二分法+矩阵高速功率
    Linux SVNserver建立
    JavaScript window.location物
    [D3] Reuse Transitions in D3 v4
    [D3] Animate Transitions in D3 v4
    [D3] Debug D3 v4 with Dev Tools
    [Angular] Custom directive Form validator
    [D3] Build an Area Chart with D3 v4
  • 原文地址:https://www.cnblogs.com/liunanjava/p/4295880.html
Copyright © 2011-2022 走看看