• 简单工厂设计模式


    案例:计算器程序的编写

    第一种:

    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));
    
        }
    }
    测试类
  • 相关阅读:
    Linux内核设计与实现 总结笔记(第五章)系统调用
    Linux内核设计与实现 总结笔记(第四章)进程调度
    Linux内核设计与实现 总结笔记(第三章)进程
    Linux内核设计与实现 总结笔记(第二章)
    4412 移植x264并且YUV422转x264
    4412 使用usb摄像头拍照YUYV格式
    LDD3 第15章 内存映射和DMA
    LDD3 第13章 USB驱动程序
    ldd3 第12章 PCI驱动程序
    4412 移植mpu9250尝试
  • 原文地址:https://www.cnblogs.com/wwlw/p/7591338.html
Copyright © 2020-2023  润新知