Creational Patterns Part 1/5: Factory Pattern
目录
Definition
Factory Pattern是Java中最常用的设计模式之一。这个模式属于Creational Patterns的原因就是它会Create一个对象。
何时使用?当希望使用统一的接口创建不同的实现类对象并且对用户隐藏对象的创建逻辑时。
使用频率: High
UML Class Diagram
Implementation
Shape接口,含有draw()方法。
创建Shape接口的实现类(Circle, Square和Rectangle)就可以交给ShapeFactory来实现。
// Shape.java
package designpatterns.creationalpatterns.factory;
public interface Shape {
void draw();
}
// FactoryDemo.java
package designpatterns.creationalpatterns.factory;
public class FactoryDemo {
public static void main(String[] args) {
ShapeFactory factory = new ShapeFactory();
Shape shape = factory.getShape("circle");
shape.draw();
shape = factory.getShape("square");
shape.draw();
shape = factory.getShape("rectangle");
shape.draw();
}
}
class ShapeFactory {
Shape getShape(String shapeType) {
if (shapeType == null) return null;
if (shapeType.equalsIgnoreCase("CIRCLE")) {
return new Circle();
} else if (shapeType.equalsIgnoreCase("SQUARE")) {
return new Square();
} else if (shapeType.equalsIgnoreCase("RECTANGLE")) {
return new Rectangle();
}
return null;
}
}
class Circle implements Shape {
@Override
public void draw() {
System.out.println("Circle::draw");
}
}
class Square implements Shape {
@Override
public void draw() {
System.out.println("Square::draw");
}
}
class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("Rectangle::draw");
}
}
// output
Circle::draw
Square::draw
Rectangle::draw