zoukankan      html  css  js  c++  java
  • 简单工厂设计模式

    案例:计算器程序的编写

    第一种:

    import java.util.Scanner;
    
    public class Operation {
    
        public static void main(String[] args) {
            Scanner input = new Scanner(System.in);
            System.out.println("请输入第一个数字:");
            double num1 = input.nextDouble();
            System.out.println("请输入运算符号:");
            String operate = input.next();
            System.out.println("请输入第二个数字:");
            double num2 = input.nextDouble();
            double sum = 0; // 保存结果
            switch (operate) {
            case "+":
                sum = num1 + num2;
                break;
            case "-":
                sum = num1 - num2;
                break;
            case "*":
                sum = num1 * num2;
                break;
            case "/":
                sum = num1 / num2;
                break;
            }
            System.out.println("结果是:" + sum);
        }
    }
    计算器

    第二种:

    /**
     * 运算类
     */
    public class Operate {
    
        public static double getOperate(double num1, String operate, double num2) {
            double sum = 0; // ąŁ´ć˝ášű
            switch (operate) {
            case "+":
                sum = num1 + num2;
                break;
            case "-":
                sum = num1 - num2;
                break;
            case "*":
                sum = num1 * num2;
                break;
            case "/":
                sum = num1 / num2;
                break;
            }
            return sum;
        }
    
    }
    运算类
    import java.util.Scanner;
    
    public class Operation {
    
        public static void main(String[] args) {
            Scanner input = new Scanner(System.in);
            System.out.println("请输入第一个数字:");
            double num1 = input.nextDouble();
            System.out.println("请输入运算符号:");
            String operate = input.next();
            System.out.println("请输入第二个数字:");
            double num2 = input.nextDouble();
            // 获取结果
            double sum = Operate.getOperate(num1, operate, num2);
            System.out.println("结果是:" + sum);
    
        }
    }
    测试类

    第三种:

    01.设置一个运算类接口

    02.然后四种运算方法分别实现此接口

    03.在写出运算类和测试类

    /**
     *  无论是加减乘除 还是平方,开根等
     *  都是运算
     *  接口就是规定一种行为! 不关注实现!
     *  就写一个运算的方法!
     *  
     */
    public interface Operation {
    
        double getResult(double num1, double num2);
    
    }
    总接口
    public class Addtion 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;
        }
    
    }
    除法
    import cn.bdqn.third.impl.Addtion;
    import cn.bdqn.third.impl.Division;
    import cn.bdqn.third.impl.Minus;
    import cn.bdqn.third.impl.Multiplication;
    import cn.bdqn.third.impl.Operation;
    
    /**
     * 运算类
     * 
     * 
     * 
     *  真正运算的是 我们的接口还是  实现类!!!!   
     *  肯定是实现类!
     *  言外之意,我们需要实例化 实现类 才能实现运算的功能!
     *  这么多实现类 都需要 实例化!
     *  
     *  01.我们有继承关系!
     *  02.有多个实现类需要实例化
     *  03.首选我们的工厂设计模式
     *  
     *  虽然代码量增加! 但是我们程序的扩展性和复用性强了!耦合度降低!
     *  
     */
    public class OperateFactory {
    
        /**
         * 
         * @param operate  用户传递过来的运算符号
         * @return  根据用户的运算符号  返回不同的算法
         */
        public static Operation getOperate(String operate) {
            // 父类引用指向子类的对象
            Operation operation = null;
            switch (operate) {
            case "+":
                operation = new Addtion();
                break;
            case "-":
                operation = new Minus();
                break;
            case "*":
                operation = new Multiplication();
                break;
            case "/":
                operation = new Division();
                break;
            }
            return operation;
        }
    
    }
    运算类
    import java.util.Scanner;
    
    import cn.bdqn.third.impl.Operation;
    
    public class OperationDemo {
    
        public static void main(String[] args) {
            Scanner input = new Scanner(System.in);
            System.out.println("请输入第一个数字:");
            double num1 = input.nextDouble();
            System.out.println("请输入运算符号:");
            String operate = input.next();
            System.out.println("请输入第二个数字:");
            double num2 = input.nextDouble();
            Operation operation = OperateFactory.getOperate(operate);
            System.out.println(operation.getResult(num1, num2));
    
        }
    }
    测试类
  • 相关阅读:
    sublime text 4 vim 插件配置
    ssh-keygen 的使用
    distribution transaction solution
    bilibili 大数据 视频下载 you-get
    Deepin 20.2.1 安装 MS SQL 2019 容器版本
    【转】使用Linux下Docker部署MSSQL并加载主机目录下的数据库
    【转】You Can Now Use OneDrive in Linux Natively Thanks to Insync
    dotnet 诊断工具安装命令
    Linux 使用 xrandr 设置屏幕分辨率
    【转】CentOS 7.9 2009 ISO 官方原版镜像下载
  • 原文地址:https://www.cnblogs.com/wwlw/p/7591338.html
Copyright © 2011-2022 走看看