Java 工厂模式学习笔记 举例一个简单计算器

前几天面试,面试官让我现场用工厂模式写一个简单的计算器,实现加减乘除功能。
下面记录一下个人的思路,用简单工厂模式实现。
1、首先我考虑计算器的功能是获取计算结果,那么首先定义接口(也可以用抽象类实现)

public interface CalcResult {
    float getResult(float a, float b);
}

获取结果需要传入两个数

下面定义这个接口的加减乘除四个实现类(乘除英文忘了,索性都用中文吧)

public class CalcJia implements CalcResult {

    @Override
    public float getResult(float a, float b) {
        return a + b;
    }
}
public class CalcJian implements CalcResult {
    @Override
    public float getResult(float a, float b) {
        return a - b;
    }
}
public class CalcChen implements CalcResult {
    @Override
    public float getResult(float a, float b) {
        return a * b;
    }
}
public class CalcChu implements CalcResult {
    @Override
    public float getResult(float a, float b) {
        return a / b;
    }
}

接下来定义工厂

public class CalcFactory {
    public final static int TYPE_JIA = 0x1;
    public final static int TYPE_JIAN = 0x2;
    public final static int TYPE_CHEN = 0x3;
    public final static int TYPE_CHU = 0x4;

    public static CalcResult create(int Type) {
        switch (Type) {
            case TYPE_JIA:
                return new CalcJia();
            case TYPE_JIAN:
                return new CalcJian();
            case TYPE_CHEN:
                return new CalcChen();
            case TYPE_CHU:
                return new CalcChu();
            default:
                return null;
        }
    }
}

下面使用这个计算器

public class CalcTest {
    public static void main(String[] args) {
        System.out.println(CalcFactory.create(CalcFactory.TYPE_JIA).getResult(1, 2));
    }
}

这样用简单工厂模式实现一个计算器就完成了,如果后面要扩充需要增加接口的实现类以及工厂中的判断

下面继续记录一下另外两种工厂模式
1、工厂方法模式
将工厂接口提取出来

public interface ICalcFactory {
    CalcResult create();
}

实现该接口

public class JiaFactory implements ICalcFactory{
    @Override
    public CalcResult create() {
        return new CalcJia();
    }
}
public class CalcTest {
    public static void main(String[] args) {
//        System.out.println(CalcFactory.create(CalcFactory.TYPE_JIA).getResult(1, 2));
        System.out.println(new JiaFactory().create().getResult(1,2));
    }
}

2、抽象工厂模式
这个例子想不到怎么加,下次换个例子在记录

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值