简单工厂模式

24 阅读1分钟

简单工厂模式:到底要实例化谁,将来会不会增加实例化的对象,比如计算器增加不同的运算是很容易变化的地方,应该考虑使用一个单独的类来做这个创造实例的过程,这就是简单工厂。使用switch判断具体实例化哪个实例。

image.png

// 简单工厂
public class Operation {
	
	private Double number1;
	private Double number2;

	public Double getNumber1() {
		return number1;
	}
	public void setNumber1(Double number1) {
		this.number1 = number1;
	}
	public Double getNumber2() {
		return number2;
	}
	public void setNumber2(Double number2) {
		this.number2 = number2;
	}
	
	public Double getResult() {
		double result=0;
		return result;
	}
}

// 加法工厂
public class OperationAdd extends Operation {
	
	@Override
	public Double getResult() {
		Double result=0d;
		result=getNumber1()+getNumber2();
		return result;
	
	}
}
// 除法工厂
public class OperationDiv extends Operation {
	
	@Override
	public Double getResult() {
		Double result=0d;
		result=getNumber1()/getNumber2();
		return result;
	
	}
}
// 乘法工厂
public class OperationMul extends Operation {
	
	@Override
	public Double getResult() {
		Double result=0d;
		result=getNumber1()*getNumber2();
		return result;
	
	}
}
// 减法工厂
public class OperationSub extends Operation {
	
	@Override
	public Double getResult() {
		Double result=0d;
		result=getNumber1()-getNumber2();
		return result;
	
	}
}
// 测试
public class Test {
	
	public static void main(String[] args) {
		
		System.out.println("加法工厂测试");
		OperationAdd operationAdd=new OperationAdd();
		operationAdd.setNumber1(Double.valueOf(1));
		operationAdd.setNumber2(Double.valueOf(1));
		Double addResult = operationAdd.getResult();
		System.out.println(addResult);
		
		System.out.println("减法工厂测试");
		OperationSub operationSub=new OperationSub();
		operationSub.setNumber1(Double.valueOf(2));
		operationSub.setNumber2(Double.valueOf(1));
		Double subResult = operationSub.getResult();
		System.out.println(subResult);
		
		System.out.println("乘法工厂测试");
		OperationMul operationMul=new OperationMul();
		operationMul.setNumber1(Double.valueOf(2));
		operationMul.setNumber2(Double.valueOf(1));
		Double mulResult = operationMul.getResult();
		System.out.println(mulResult);

		
		System.out.println("减法工厂测试");
		OperationDiv operationDiv=new OperationDiv();
		operationDiv.setNumber1(Double.valueOf(2));
		operationDiv.setNumber2(Double.valueOf(1));
		Double divResult = operationMul.getResult();
		System.out.println(divResult);
	}
}



`