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));
    
        }
    }
    测试类
  • 相关阅读:
    前端精选文摘:BFC 神奇背后的原理
    Linux下关闭node应用
    CentOS7配置Nodejs环境安装记录
    Express4+Mongodb极简入门实例
    Centos7 防火墙设置
    如何解决Linux内网环境依赖问题
    Centos7 显卡驱动安装教程
    ios自动化WebDriverAgent测试报错
    Windows版sudo 以管理员发送运行CMD
    adb常用命令
  • 原文地址:https://www.cnblogs.com/wwlw/p/7591338.html
Copyright © 2011-2022 走看看