工厂方法模式

简单工厂是需要通过一些条件(switch判断),然后由工厂来返回具体的实例

工厂方法模式是直接创建出需要的实例,即通过继承父类的方式,来实现扩展,需要通过访问具体的工厂来获得实例,也就是需要记住所有的工厂。

考虑一个简单的图形绘制应用程序。你想要一个能够绘制不同形状(圆形、正方形、三角形)的功能。

我们可以使用工厂方法模式来实现这个场景。首先,定义一个抽象的 Shape 接口,然后创建具体的形状类实现这个接口。接着,定义一个抽象的 ShapeFactory 类来作为工厂,让具体的形状工厂类来创建对应的形状对象。

Shape 接口:

// Shape 接口
public interface Shape {
    void draw();
}

具体形状实现类:

// Circle 类
public class Circle implements Shape {
    @Override
    public void draw() {
        System.out.println("绘制圆形");
    }
}

// Square 类
public class Square implements Shape {
    @Override
    public void draw() {
        System.out.println("绘制正方形");
    }
}

// Triangle 类
public class Triangle implements Shape {
    @Override
    public void draw() {
        System.out.println("绘制三角形");
    }
}

抽象工厂类

// ShapeFactory 抽象类
public abstract class ShapeFactory {
    public abstract Shape createShape();
}

具体工厂类

// CircleFactory 类
public class CircleFactory extends ShapeFactory {
    @Override
    public Shape createShape() {
        return new Circle();
    }
}

// SquareFactory 类
public class SquareFactory extends ShapeFactory {
    @Override
    public Shape createShape() {
        return new Square();
    }
}

// TriangleFactory 类
public class TriangleFactory extends ShapeFactory {
    @Override
    public Shape createShape() {
        return new Triangle();
    }
}

使用示例

public class Main {
    public static void main(String[] args) {
        ShapeFactory circleFactory = new CircleFactory();
        Shape circle = circleFactory.createShape();
        circle.draw();

        ShapeFactory squareFactory = new SquareFactory();
        Shape square = squareFactory.createShape();
        square.draw();

        ShapeFactory triangleFactory = new TriangleFactory();
        Shape triangle = triangleFactory.createShape();
        triangle.draw();
    }
}

你可能感兴趣的:(设计模式,工厂方法模式)