简单工厂模式:根据传入的参数不同获得不同的对象;
优点:降低了代码的耦合性,只需要输入不同的参数就可以获取想要的对象,不需要关心对象的组装细节
缺点:大量的逻辑业务在工厂类中,当增加了新的类型就必须要修改工厂类的代码才能进行扩展
例:
方形、三角形都是形状,抽象出一个Shape作为形状抽象类,其中含有各种方法例如获取面积getArea();
public abstract class Shape{
double getArea();
}
三角形:
public class Triangle extends Shape{
double getAread(){
system.out.println("获取三角形的面积");
}
}
方形:
public class Square extends Shape{
double getArea(){
system.out.println("获取方形的面积");
}
}
简单工厂类:
public class SimpleFactor {
public Shape getShape(String type){
if(!StringUtils.isNull(type)&&"triangle".equals(type)){
return new Triangle();
}else if(!StringUtils.isNull(type)&&"square".equals(type)){
return new Square();
}
}
}
如果增加一个圆形类:
public class Circle extends Shape{
double getArea(){"获取圆形的面积"}
}
工厂类需要进行修改:增加对圆形的处理
public class SimpleFactor {
public Shape getShape(String type){
if(!StringUtils.isNull(type)&&"triangle".equals(type)){
return new Triangle();
}else if(!StringUtils.isNull(type)&&"square".equals(type)){
return new Square();
}else if(!StringUtils.isNull(type)&&"circle".equals(type)){
return new Circle();
}