在Java中,工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
以下是如何自定义Java工厂模式的接口和实现类的步骤:
- 首先,定义一个接口,该接口将声明工厂类需要实现的方法。例如,这里有一个名为
Shape
的接口:
public interface Shape { void draw(); }
- 然后,为每种具体类型创建实现此接口的实现类。例如,这里有两个实现类
Circle
和Rectangle
:
public class Circle implements Shape { @Override public void draw() { System.out.println("Drawing a circle."); } } public class Rectangle implements Shape { @Override public void draw() { System.out.println("Drawing a rectangle."); } }
- 创建一个工厂类,该类包含一个静态方法,该方法根据输入参数(例如,类型)返回相应的实现类实例。例如,这里有一个名为
ShapeFactory
的工厂类:
public class ShapeFactory { public static Shape getShape(String shapeType) { if (shapeType == null) { return null; } if (shapeType.equalsIgnoreCase("circle")) { return new Circle(); } else if (shapeType.equalsIgnoreCase("rectangle")) { return new Rectangle(); } return null; } }
- 最后,在客户端代码中,使用工厂类创建所需类型的实例。例如:
public class Main { public static void main(String[] args) { Shape circle = ShapeFactory.getShape("circle"); circle.draw(); Shape rectangle = ShapeFactory.getShape("rectangle"); rectangle.draw(); } }
这样,你就可以根据需要轻松地添加更多形状实现和修改工厂类,而无需更改客户端代码。