MST

星途 面试题库

面试题:Java中抽象类在工厂模式里的作用

请简述在Java的工厂模式实现中,抽象类扮演了怎样的角色,并举例说明如何通过抽象类来规范产品对象的创建。
12.7万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

抽象类在Java工厂模式中的角色

  1. 定义产品规范:抽象类可以定义产品对象的公共接口和行为,所有具体的产品类都继承自该抽象类,确保它们具有一致的结构和功能。这使得工厂模式创建的产品具有统一的外观和使用方式,便于客户端调用。
  2. 解耦创建和使用:抽象类将产品的具体实现与客户端代码分离。客户端只需要关注抽象类定义的接口,而不需要了解具体产品类的细节。工厂类负责创建具体的产品对象,这种分离有助于提高代码的可维护性和可扩展性。

通过抽象类规范产品对象创建的示例

// 抽象产品类
abstract class Shape {
    public abstract void draw();
}

// 具体产品类1
class Circle extends Shape {
    @Override
    public void draw() {
        System.out.println("绘制圆形");
    }
}

// 具体产品类2
class Rectangle extends Shape {
    @Override
    public void draw() {
        System.out.println("绘制矩形");
    }
}

// 工厂类
class ShapeFactory {
    public Shape createShape(String type) {
        if ("circle".equalsIgnoreCase(type)) {
            return new Circle();
        } else if ("rectangle".equalsIgnoreCase(type)) {
            return new Rectangle();
        }
        return null;
    }
}

// 客户端代码
public class Main {
    public static void main(String[] args) {
        ShapeFactory factory = new ShapeFactory();
        Shape circle = factory.createShape("circle");
        if (circle != null) {
            circle.draw();
        }
        Shape rectangle = factory.createShape("rectangle");
        if (rectangle != null) {
            rectangle.draw();
        }
    }
}

在上述示例中,Shape 抽象类定义了 draw 方法,规范了所有形状(产品)都应该具有绘制的行为。CircleRectangle 作为具体产品类继承自 Shape 抽象类,并实现了 draw 方法。ShapeFactory 工厂类负责根据传入的类型创建具体的形状对象。客户端通过工厂类获取形状对象,并调用其 draw 方法,而无需了解具体形状类的实现细节,这体现了抽象类在规范产品对象创建方面的作用。