面试题答案
一键面试工厂模式概念
工厂模式是一种创建型设计模式,它提供了一种创建对象的方式,将对象的创建和使用分离。通过使用工厂模式,可以将对象创建逻辑封装在一个工厂类中,而不是在客户端代码中直接实例化对象,这样使得代码更具可维护性和可扩展性。
Java代码实现简单工厂模式生产不同图形
- 首先定义图形接口
public interface Shape {
void draw();
}
- 定义圆形实现类
public class Circle implements Shape {
@Override
public void draw() {
System.out.println("绘制圆形");
}
}
- 定义矩形实现类
public class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("绘制矩形");
}
}
- 定义工厂类
public class ShapeFactory {
public Shape getShape(String shapeType) {
if (shapeType == null) {
return null;
}
if ("circle".equalsIgnoreCase(shapeType)) {
return new Circle();
} else if ("rectangle".equalsIgnoreCase(shapeType)) {
return new Rectangle();
}
return null;
}
}
- 使用工厂类
public class FactoryPatternDemo {
public static void main(String[] args) {
ShapeFactory shapeFactory = new ShapeFactory();
Shape circle = shapeFactory.getShape("circle");
circle.draw();
Shape rectangle = shapeFactory.getShape("rectangle");
rectangle.draw();
}
}
工厂模式解决的问题
- 解耦对象创建和使用:客户端不需要知道具体对象的创建细节,只需要向工厂请求对象,降低了客户端与具体对象之间的耦合度。
- 提高可维护性和可扩展性:如果需要添加新的对象类型,只需要在工厂类中添加相应的创建逻辑,而不需要修改大量的客户端代码。
工厂模式的优点
- 代码可维护性:对象创建逻辑集中在工厂类,修改创建逻辑时只需要修改工厂类,不会影响到其他大量的客户端代码。
- 可扩展性:易于添加新的对象类型,符合开闭原则。
- 降低耦合度:将对象创建和使用分离,使得各模块之间的依赖关系更加清晰。
工厂模式的缺点
- 工厂类职责过重:随着对象类型的增多,工厂类的
if - else
逻辑可能会变得复杂,不利于维护。 - 不符合单一职责原则:工厂类可能承担了过多对象创建的职责。
- 引入额外的复杂性:对于简单的对象创建场景,使用工厂模式可能会引入过多的类和复杂的结构。