• JavaOperator小框架制作【精品博客】


    以下是运算小框架的制作过程,以及核心代码,完成(计算,监听,回馈等):


    package com.demo2.operator;
    
    /**
     * 运算标准接口
     * @author Liudeli
     */
    public interface IOperator {
    
        /**
         * 设置第一个数
         * @param number1
         * @return
         */
        public Operator setNumber1(double number1);
    
        /**
         * 设置运算符
         * @param operator
         * @return
         */
        public Operator setOperator(String operator);
    
        /**
         * 设置第二个数
         * @param number2
         * @return
         */
        public Operator setNumber2(double number2);
    
    
        /**
         * 设置运算结果
         * @param onResult
         * @return
         */
        public Operator setOnResultListener(OnResult onResult);
    
        /**
         * 设置运算出错
         * @param onError
         * @return
         */
        public Operator setOnErrorListener(OnError onError);
    
        /**
         * 次方法为最后提交的方法(必须最后提交调用)
         */
        public void operatorCommit();
    }
    
    package com.demo2.operator;
    
    /**
     * 运算配置类
     * @author Liudeli
     */
    public class OperatorConfig {
    
        /**
         * 定义返回错误码(运算符输入错误)
         */
        public static final int ERROR_CODE_INPUT = 4004;
    
        /**
         * 定义返回错误码(运算发生异常)
         */
        public static final int ERROR_CODE_EX = 4005;
    
        /**
         * 运算默认值
         */
        public static final double RESULT_DEFAUTL = 0.0;
    
    }
    
    package com.demo2.operator;
    
    /**
     * 运算结果接口
     * @author Liudeli
     */
    public interface OnResult {
    
        /**
         * 获取得到运算结果
         * @param result
         */
        public void result(double result);
    
    }
    
    package com.demo2.operator;
    
    /**
     * 次接口为运算出错接口
     * @author Liudeli
     *
     */
    public interface OnError {
    
        /**
         * 错误码方法
         * @param error
         */
        public void error(int error);
    
    }
    
    package com.demo2.operator;
    
    /**
     * 此类为运算类的具体实现
     * @author Liudeli
     */
    public class Operator implements IOperator {
    
        /**
         * 定义单例模式
         */
        private static Operator mOperator = null;
    
        public static Operator getInstance() {
            if (null == mOperator) {
                synchronized (Operator.class) {
                    mOperator = new Operator();
                }
            }
            return mOperator;
        }
    
        /**
         * 此方法的用于计算两个数的值
         * @param figure1   第一个数值
         * @param figure2   第二个数值
         * @param operator  传入运算符
         * @return
         */
        private double getOperatorResult(double figure1,
                double figure2, String operator) {
    
            double resultOperator = OperatorConfig.RESULT_DEFAUTL;
    
            try {
                if ("+".equals(operator)) {
                    resultOperator = figure1 + figure2;
                } else if ("-".equals(operator)) {
                    resultOperator = figure1 - figure2;
                } else if ("*".equals(operator)) {
                    resultOperator = figure1 * figure2;
                } else if ("/".equals(operator)) {
                    resultOperator = figure1 / figure2;
                } else {
                    onError.error(OperatorConfig.ERROR_CODE_INPUT);
                }
            } catch (Exception e) {
                e.printStackTrace();
                onError.error(OperatorConfig.ERROR_CODE_EX);
            }
            return resultOperator;
    
        }
    
        private double number1;
    
        public Operator setNumber1(double number1) {
            this.number1 = number1;
            return this;
        }
    
        private String operator;
    
        public Operator setOperator(String operator) {
            this.operator = operator;
            return this;
        }
    
        private double number2;
    
        public Operator setNumber2(double number2) {
            this.number2 = number2;
            return this;
        }
    
        private OnResult  onResult;
    
        public Operator setOnResultListener(OnResult onResult) {
            this.onResult = onResult;
            return this;
        }
    
        private OnError onError;
    
        public Operator setOnErrorListener(OnError onError) {
            this.onError = onError;
            return this;
        }
    
        public void operatorCommit() {
            double operatorResult = getOperatorResult(number1, number2, operator);
            if (OperatorConfig.RESULT_DEFAUTL != operatorResult) {
                onResult.result(operatorResult);
            }
        }
    
    }
    

    使用方式,非常灵活,可以设置监听提交结合一体:
    这里写图片描述

    模拟客户端程序使用:

    方式一:

    package com.demo2.client;
    
    import java.util.Scanner;
    
    import com.demo2.operator.OnError;
    import com.demo2.operator.OnResult;
    import com.demo2.operator.Operator;
    
    /**
     * 模拟客户端程序
     * @author Liudeli
     */
    public class Client {
    
        public static void main(String [] srgs) {
    
            Scanner scanner = new Scanner(System.in);
    
            System.out.println("请输入第一个数");
            double number1 = Double.parseDouble(scanner.nextLine());
    
            System.out.println("请输入运算符  ( + - * /)");
            String operator = scanner.nextLine();
    
            System.out.println("请输入第二数");
            double number2 = Double.parseDouble(scanner.nextLine());
    
            // 第一种用法
            Operator.getInstance()
            .setNumber1(number1)
            .setNumber2(number2)
            .setOperator(operator)
            .setOnErrorListener(new OnError() {
    
                public void error(int error) {
                    System.out.println("运算过程出错,错误码是:" + error);
                }
            })
            .setOnResultListener(new OnResult() {
    
                public void result(double result) {
                    System.out.println("运算结果是:" + result);
                }
            })
            .operatorCommit();
        }
    
    }
    

    方式二:

    package com.demo2.client;
    
    import java.util.Scanner;
    
    import com.demo2.operator.OnError;
    import com.demo2.operator.OnResult;
    import com.demo2.operator.Operator;
    
    /**
     * 模拟客户端程序
     * @author Liudeli
     */
    public class Client2 {
    
        public static void main(String [] srgs) {
    
            Scanner scanner = new Scanner(System.in);
    
            System.out.println("请输入第一个数");
            double number1 = Double.parseDouble(scanner.nextLine());
    
            System.out.println("请输入运算符   (+ - * /)");
            String operator = scanner.nextLine();
    
            System.out.println("请输入第二数");
            double number2 = Double.parseDouble(scanner.nextLine());
    
            // 第二种用法
            Operator.getInstance()
            .setNumber1(number1)
            .setNumber2(number2)
            .setOperator(operator)
            .setOnErrorListener(onError)
            .setOnResultListener(onResult)
            .operatorCommit();
        }
    
        private static OnError onError = new OnError() {
    
            public void error(int error) {
                System.out.println("运算过程出错,错误码是:" + error);
            }
        };
    
        private static OnResult onResult = new OnResult() {
    
            public void result(double result) {
                System.out.println("运算结果是:" + result);
            }
    
        };
    
    }
    

    方式三:

    package com.demo2.client;
    
    import java.util.Scanner;
    
    import com.demo2.operator.OnError;
    import com.demo2.operator.OnResult;
    import com.demo2.operator.Operator;
    
    /**
     * 模拟客户端程序
     * @author Liudeli
     */
    public class Client3 {
    
        public static void main(String [] srgs) {
    
            Scanner scanner = new Scanner(System.in);
    
            System.out.println("请输入第一个数");
            double number1 = Double.parseDouble(scanner.nextLine());
    
            System.out.println("请输入运算符   (+ - * /)");
            String operator = scanner.nextLine();
    
            System.out.println("请输入第二数");
            double number2 = Double.parseDouble(scanner.nextLine());
    
            // 第三种用法
            Operator instance = Operator.getInstance();
    
            instance.setNumber1(number1);
            instance.setNumber2(number2);
            instance.setOperator(operator);
    
            instance.setOnErrorListener(new OnError() {
    
                public void error(int error) {
                    System.out.println("运算过程出错,错误码是:" + error);
                }
            });
    
            instance.setOnResultListener(new OnResult() {
    
                public void result(double result) {
                    System.out.println("运算结果是:" + result);
                }
            });
    
            instance.operatorCommit();
        }
    }
    

    运行结果:
    这里写图片描述

    这里写图片描述


    Project结构:
    这里写图片描述


    谢谢大家的观看,更多精彩技术博客,会不断的更新,请大家访问,
    刘德利CSDN博客, http://blog.csdn.net/u011967006

  • 相关阅读:
    左萧龙(LZ)个人博客
    不同样式的计数
    CSS径向渐变radial-gradient
    优秀的Android资源
    读取csv格式的数据
    php 获取URL 各部分参数
    phpstorm查找替换文件中的变量
    PhpStorm 快捷键大全 PhpStorm 常用快捷键和配置
    phpstorm 代码注释后,撤销某段代码的注释的,快捷键是什么?
    关于thinkphp5手动抛出Http异常时自定义404页面报错的问题
  • 原文地址:https://www.cnblogs.com/android-deli/p/10322207.html
Copyright © 2020-2023  润新知