Java 工厂模式

Java 工厂模式

Java设计模式 - 工厂模式工厂模式是一种创建模式,因为此模式提供了更好的方法来创建对象。在工厂模式中,我们创建对象而不将创建逻辑暴露给客户端。例子在以下部分中,我们将展示如何使用工厂模式创建对象。由工厂模式创建的对象将是形状对象,如圆形,矩形。首先,我们设计一个接口来表示Shape。public interface Shape {

void draw();

}

然后我们创建实现接口的具体类。以下代码用于Rectangle.javapublic class Rectangle implements Shape {

@Override

public void draw() {

System.out.println("Inside Rectangle::draw() method.");

}

}

Square.javapublic class Square implements Shape {

@Override

public void draw() {

System.out.println("Inside Square::draw() method.");

}

}

Circle.javapublic class Circle implements Shape {

@Override

public void draw() {

System.out.println("Inside Circle::draw() method.");

}

}

核心工厂模式是一个Factory类。以下代码显示了如何为Shape对象创建Factory类。ShapeFactory类基于传递给getShape()方法的String值创建Shape对象。如果String值为CIRCLE,它将创建一个Circle对象。public class ShapeFactory {

//use getShape method to get object of type shape

public Shape getShape(String shapeType){

if(shapeType == null){

return null;

}

if(shapeType.equalsIgnoreCase("CIRCLE")){

return new Circle();

} else if(shapeType.equalsIgnoreCase("RECTANGLE")){

return new Rectangle();

} else if(shapeType.equalsIgnoreCase("SQUARE")){

return new Square();

}

return null;

}

}

以下代码具有main方法,并且它使用Factory类通过传递类型等信息来获取具体类的对象。public class Main {

public static void main(String[] args) {

ShapeFactory shapeFactory = new ShapeFactory();

  //get an object of Circle and call its draw method.

Shape shape1 = shapeFactory.getShape("CIRCLE");

//call draw method of Circle

shape1.draw();

//get an object of Rectangle and call its draw method.

Shape shape2 = shapeFactory.getShape("RECTANGLE");

//call draw method of Rectangle

shape2.draw();

//get an object of Square and call its draw method.

Shape shape3 = shapeFactory.getShape("SQUARE");

//call draw method of circle

shape3.draw();

}

}

上面的代码生成以下结果。