我是靠谱客的博主 拉长宝马,最近开发中收集的这篇文章主要介绍大话设计模式---------简单工厂模式(java版本),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

简单工厂模式(Simple Factory):又叫静态方法模式,因为工厂类定义了一个静态方法 ,给这个静态方法传入不同的参数可以获得不同的对象。

  • 依赖:函数中使用了箭头指向的类对象
  • 关联:本类的成员变量是箭头指向的类对象
  • 泛化:继承了箭头指向的类

简单工厂类

class Operation {
    private double first = 0;
    private double second = 0;

    public double getFirst() {
        return first;
    }

    public void setFirst(double first) {
        this.first = first;
    }

    public double getSecond() {
        return second;
    }

    public void setSecond(double second) {
        this.second = second;
    }

    public double getResult() {
        return 0;
    }
}

加法类

class OperationAdd extends Operation {
    @Override
    public double getResult() {
        return getFirst() + getSecond();
    }
}

减法类

class OperationSub extends Operation {
    @Override
    public double getResult() {
        return getFirst() - getSecond();
    }
}

乘法类

class OperationMul extends Operation {
    @Override
    public double getResult() {
        return getFirst() * getSecond();
    }
}

除法类

class OperationDiv extends Operation {
    @Override
    public double getResult() {
        // 除零判断
        if (getSecond() == 0) {
            throw new ArithmeticException("除数为零");
        }

        return getFirst() / getSecond();
    }
}

运算符工厂类

class OperationFactory {
    public static Operation createOperation(String operation) {
        Operation result = null;

        switch (operation) {
            case "+":
                result = new OperationAdd();
                break;
            case "-":
                result = new OperationSub();
                break;
            case "*":
                result = new OperationMul();
                break;
            case "/":
                result = new OperationDiv();
                break;
        }

        return result;
    }
}

运算类

/**
 * 简单工厂模式:计算器
 */
public class SimpleFactoryComparator {
    public static void main(String[] args) {
        // 使用缓冲流读取控制台输入
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        try {
            System.out.println("请输入第一个数字:");
            double first = Double.parseDouble(br.readLine());
            System.out.println("请输入操作符(+、-、*、/);");
            Operation operation = OperationFactory.createOperation(br.readLine());
            System.out.println("请输入第二个数字:");
            double second = Double.parseDouble(br.readLine());
            operation.setFirst(first);
            operation.setSecond(second);
            System.out.println("结果是:" + operation.getResult());
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ArithmeticException e) {
            e.printStackTrace();
        }
    }

}

原文转载自第1章 代码无错就是优?——简单工厂模式(Java) - ageovb - 博客园

最后

以上就是拉长宝马为你收集整理的大话设计模式---------简单工厂模式(java版本)的全部内容,希望文章能够帮你解决大话设计模式---------简单工厂模式(java版本)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(31)

评论列表共有 0 条评论

立即
投稿
返回
顶部