模式描述:提供一个用于创建对象的接口(工厂接口),让其实现类(工厂实现类)决定实例化哪一个产品类,并且由该实现类创建对应的产品实例。
工厂方法模式:
一个抽象产品类,可以派生出多个具体产品类
一个抽象工厂类,可以派生出多个具体工厂类
每个具体工厂类只能创建一个产品类的实例
可扩展性较强,如果新增加一个功能,直接添加一个新的工厂类就可以啦。
一,创建一个接口
Shape.java
public interface Shape {
void draw();
}
二,创建实现接口的实体类
Rectangle.java
public class Rectangle implements Shape {
@Override
public void draw() {
System.out.println("Inside Rectangle::draw() method.");
}
}
Square.java
public class Square implements Shape {
@Override
public void draw() {
System.out.println("Inside Square::draw() method.");
}
}
Circle.java
public class Circle implements Shape {
@Override
public void draw() {
System.out.println("Inside Circle::draw() method.");
}
}
三,创建一个工厂接口类
Provider.java
public interface Provider {
public shape produce();
}
四,创建工厂具体实现类
CircleFactory.java
public class CircleFactory implements Provider {
@Override
public shape produce() {
return new Circle();
}
}
RectangleFactory.java
public class RectangleFactory implements Provider {
@Override
public shape produce() {
return new Rectangle();
}
}
五,使用该工厂,测试代码
ShapeFactoryTest .java
public class ShapeFactoryTest {
public static void main(String[] args) {
Provider provider = new CircleFactory();
shape shape = provider.produce();
shape.draw();
}
}
运行结果:
Inside Circle::draw() method.