为什么使用设计模式?
在开发中使用设计模式虽然会增加代码量,但是使用设计模式能使得代码更加灵活、可扩展和复用。
文章根据《大话设计模式》,记录学习历程。
百度百科:
简单工厂,工厂模式定义:提供创建对象的接口。
简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
计算器。
所有运算操作的父类,子类覆盖getResult()方法实现自身操作
public class Operator {
private int a;
private int b;
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
public int getB() {
return b;
}
public void setB(int b) {
this.b = b;
}
public int getResult() throws Exception {
return 0;
}
}
工厂方法,根据传入的操作创建对用的实例方法
public class OperatorFactory {
public static Operator createFactory(String operators) {
Operator operator = null;
switch (operators) {
case "+":
operator = new Add();
break;
case "-":
operator = new Subtract();
break;
case "*":
operator = new Multiply();
break;
case "/":
operator = new Divide();
}
return operator;
}
}
加法运算
public class Add extends Operator {
@Override
public int getResult() {
return getA() + getB();
}
}
减法运算
public class Subtract extends Operator{
@Override
public int getResult() {
return getA() - getB();
}
}
* 乘法运算*
public class Multiply extends Operator{
@Override
public int getResult() {
return getA() * getB();
}
}
除法运算
public class Divide extends Operator{
@Override
public int getResult() throws Exception {
if (getB() == 0) {
throw new Exception("除数不能为0");
}
return getA() / getB();
}
}
main方法
public class Main {
public static void main(String[] args) throws Exception {
Operator operator;
operator = OperatorFactory.createFactory("/");
operator.setA(1);
operator.setB(2);
int result = operator.getResult();
System.out.println(result);
}
}
上面是一个简单工厂方法,如果要添加模运算或者区余运算,只要重新添加新的方法,继承Operator 类,重新父类的getResult()方法,在工厂方法中添加操作对应创建实例即可。