工厂模式
意图
定义创建对象的接口,让子类决定创建哪一个工厂类,工厂方法使对象的创建延迟到子类,根据不同的条件创建不同的实例。
示例
定义一个创建对象的接口。
public interface Shape {
void Draw();
}
创建实现接口的实体类
public class Circle implements Shape {
@Override
public void Draw() {
System.out.println("This a circle");
}
}
public class Rentangle implements Shape {
@Override
public void Draw() {
System.out.println("This is a rentangle");
}
}
public class Triangle implements Shape {
@Override
public void Draw() {
System.out.println("This is a triangle");
}
}
创建工厂类
public class ShapeFactory {
public Shape getInstance(String shape) {
switch (shape) {
case "Circle":
return new Circle();
case "Rentangle":
return new Rentangle();
case "Triangle":
return new Triangle();
}
return null;
}
}
使用工厂类根据类型返回实体类
public class FactoryMethodDemo {
public static void main(String[] args) {
ShapeFactory factory = new ShapeFactory();
Shape circle = factory.getInstance("Circle");
Shape rentangle = factory.getInstance("Rentangle");
Shape triangle = factory.getInstance("Triangle");
circle.Draw();
rentangle.Draw();
triangle.Draw();
}
}