java设计模式之简单工厂模式

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

闲话不多说上代码

首先创建一个model 用来 存取对象

Opertion.java

public class Opertion {
	private double num1;
	private double num2;

	public double getNum1() {
		return num1;
	}

	public void setNum1(double num1) {
		this.num1 = num1;
	}

	public double getNum2() {
		return num2;
	}

	public void setNum2(double num2) {
		this.num2 = num2;
	}

	public double getResult() {
		double result = 0;
		return result;
	}

}

 这个代码主要用于存储对象,以及作为一个公共父类的作用,所有运算类都必须继承他并且重写其getresult方法

运算类

加法类

AddOpertion.java

public class AddOpertion extends Opertion {
	
	@Override
	public double getResult() {
		// TODO Auto-generated method stub
		double result =getNum1()+getNum2();
		return result;
	}

}

减法类

SubOpertion.java

public class SubOpertion extends Opertion {
	
	@Override
	public double getResult() {
		// TODO Auto-generated method stub
		double result =getNum1()-getNum2();
		return result;
	}


}

乘法类

MulOpertion.java

public class MulOpertion extends Opertion {
	@Override
	public double getResult() {
		// TODO Auto-generated method stub
		double result =getNum1()*getNum2();
		return result;
	}

除法类

DivOpertion.java

public class DivOpertion extends Opertion {
	@Override
	public double getResult() {
		// TODO Auto-generated method stub
		if (getNum2()==0) {
			try {
				throw new Exception("除数不可为零");
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		double result =getNum1()/getNum2();
		return result;
	}

}

最终是运算类

Calculate.java

public class Calculate {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入number1:");
		double num1=sc.nextDouble();
		System.out.println("请输入number2:");
		double num2=sc.nextDouble();
		System.out.println("请输入运算符:");
		String opersString=sc.next();
		
		Opertion opertion=OpertionFactory.crOpertion(opersString);
		opertion.setNum1(num1);
		opertion.setNum2(num2);
		double result=opertion.getResult();
		System.out.println("结果"+result);
		
		
		

	}

}

以上是全部代码复制就可以用。

参考资料《大话设计模式》  程杰 著

你可能感兴趣的:(java)