Java 实现简单工厂模式

工厂模式 属于创建型模式

简单工厂模式

类图


通过一个工厂类,以一个条件来创建对应的对象

//业务功能
public interface ICalculation {
	double getResult(double numA, double numB);
}

public class CalcAdd implements ICalculation {

	@Override
	public double getResult(double numA, double numB) {
		System.out.println("加法");
		return numA + numB;
	}

}

public class CalcSubtract implements ICalculation {

	@Override
	public double getResult(double numA, double numB) {
		System.out.println("减法");
		return numA - numB;
	}

}

/*
 * 简单工厂模式 关注:对象的创建
 * 建立一个工厂类,对实现了同一接口的或者是存在继承关系的一些类进行实例的创建
 */
public class Test4Simple {
	public static void main(String[] args) {
//		String operation = "/";
		String operation = "+";
//		String operation = "-";
//		String operation = "*";
		double numA = 182, numB = 33;
		ICalculation createCalc = CalcSimpleFactory.createCalc(operation);
		double result = createCalc.getResult(numA, numB);
		System.out.println(result);
	}
}

简单工厂的缺陷: 简单工厂创建产品时需要传递相应的参数,如果传递不正确就取不到对象了。

改进:多方法创建不同产品

类图


public class CalcMultipleFactory {
	
	public static ICalculation produceAdd() {
		return new CalcAdd();
	}
	
	public static ICalculation produceSubtract() {
		return new CalcSubtract();
	}
	
	public static ICalculation produceMultiply() {
		return new CalcMultiply();
	}
	
	public static ICalculation produceDivide() {
		return new CalcDivide();
	}
}

public class Test4Multiple {

	public static void main(String[] args) {
		double numA = 182, numB = 33;
		
		ICalculation createCalc = CalcMultipleFactory.produceAdd();
		double result = createCalc.getResult(numA, numB);
		System.out.println(result);
		
		createCalc = CalcMultipleFactory.produceSubtract();
		result = createCalc.getResult(numA, numB);
		System.out.println(result);
		
		createCalc = CalcMultipleFactory.produceMultiply();
		result = createCalc.getResult(numA, numB);
		System.out.println(result);
		
		createCalc = CalcMultipleFactory.produceDivide();
		result = createCalc.getResult(numA, numB);
		System.out.println(result);
	}
}



  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值