简单工厂模式--(大话设计模式大鸟和小菜Java版)

简单工厂模式:简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。(来自于百度百科)

这个文章也是为了让我能更好的学习所作,因此,就是把大话设计模式上的代码写成Java模式

这个例子是计算器的那个例子(实现了加减乘除)

//这是一个抽象类,里面定义两个实例变量和抽象方法,以便于后面代码的应用
public abstract class Operation {
    public double numberA;
    public double numberB;
    public abstract double result();
}

//继承抽象类,实现抽象方法,这个类所做的操作是两数相减的操作
class OperationSub extends Operation{

    @Override
    public double result() {
        return numberA - numberB;
    }
}

//和上面的描述一样,不过是实现两数相加的操作
class OperationAdd extends Operation{

    @Override
    public double result() {
        return numberA + numberB;
    }
}

//实现两数相乘的操作
class OperationMul extends Operation{

    @Override
    public double result() {
        return numberA * numberB;
    }
}

//实现两数相除的操作
class OperationDiv extends Operation{

    @Override
    public double result() {
//判断一下,除数是否为零
        if(numberB == 0){
            System.out.println("除数不能为0呀,老哥");
        }
        return numberA / numberB;
    }
}

//这个是一个工厂类
class OperationFactory{
    public static Operation createOperation(String operator){
//这个是作为结果返回的变量
        Operation oper = null;
//判断不同的条件
        switch(operator){
            case "+":
                oper = new OperationAdd();
                break;
            case "-":
                oper = new OperationSub();
                break;
            case "*":
                oper = new OperationMul();
                break;
            case "/":
                oper = new OperationDiv();
                break;
        }
        return oper;
    }
}

下面的是主方法的输出

import java.util.Scanner;

public class Calculator {
    public static void main(String[] args) {
        Operation operation;
        Scanner sc = new Scanner(System.in);
        String operator;
        System.out.println("请输入你想要进行运算的运算符:");
        operator = sc.next();
        operation = OperationFactory.createOperation(operator);
        System.out.println("请输入第一个数字:");
        operation.numberA = sc.nextFloat();
        System.out.println("请输入第二个数字:");
        operation.numberB = sc.nextFloat();
//这个是把得到的数进行格式化输出,我默认是保留两位小数
        System.out.printf("%.2f",operation.result());
    }
}

这就是简单工厂模式的例子了,使用的是计算器的例子,相对来说还是比较简单的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值