JAVA设计模式——简单工厂
- 格式:pdf
- 大小:58.07 KB
- 文档页数:2
JAVA设计模式——简单⼯⼚
⼯⼚模式分为三种:简单⼯⼚模式,⼯⼚⽅法模式,抽象⼯⼚模式。我看有的书上和有的⽂章⾥是分为两种,没有简单⼯⼚。
⼯⼚模式主要的作⽤是:⼀个对象在实例化的时候可以选择多个类,在实例化的时候根据⼀些业务规则来选择实例化哪个类。
1.先定义⼀个图形接⼝,有⼀个画⽅法
public interface Shape {
void draw();
}
2.再创建两个实现接⼝的实体类
public class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("画长⽅形。");
}
}
public class Square implements Shape {
@Override
public void draw() {
System.out.println("画正⽅形。");
}
}
3.创建⼀个⼯⼚,⽣成基于给定信息的实体类的对象
public class ShapeFactory {
//使⽤ createShape ⽅法获取形状类型的对象
public Shape createShape(String shapeType) {
if (shapeType == null) {
return null;
}
if (shapeType.equalsIgnoreCase("RECTANGLE")) {
return new Rectangle();
} else if (shapeType.equalsIgnoreCase("SQUARE")) {
return new Square();
}
return null;
}
}
4.使⽤该⼯⼚,通过传递类型信息来获取实体类的对象。
public class SimpleFactoryPatternDemo {
public static void main(String[] args) {
ShapeFactory shapeFactory = new ShapeFactory();
//获取 Rectangle 的对象,并调⽤它的 draw ⽅法
Shape shape1 = shapeFactory.createShape("RECTANGLE");
//调⽤ Rectangle 的 draw ⽅法
shape1.draw();
//获取 Square 的对象,并调⽤它的 draw ⽅法
Shape shape2 = shapeFactory.createShape("SQUARE");
//调⽤ Square 的 draw ⽅法
shape2.draw();
}
}
输出:
画长⽅形。
画正⽅形。
这⾥Shape接⼝声明的变量既可以⽤Rectangle实例化,也可以⽤Square实例化。ShapeFactory就是⼀个⼯⼚,去决定怎么实例化。
这个模式的缺点是对“开-闭”原则的⽀持不够。如果要新加⼀个“产品”,⽐如新加⼀个实现Shape的圆形类,要在⼯⼚⾥使⽤这个圆形类的
话,需要去修改ShapeFactory⼯⼚的代码。
那么应该怎么解决这个缺点,下篇⼯⼚⽅式模式就是解决这个问题。