设计模式之工厂模式

174 阅读1分钟

工厂模式

意图

定义创建对象的接口,让子类决定创建哪一个工厂类,工厂方法使对象的创建延迟到子类,根据不同的条件创建不同的实例。

示例

定义一个创建对象的接口。

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();
    }
}