Skip to content

工厂方法模式

GoF 23种设计模式之一。将对象的创建延迟到子类,定义一个用于创建对象的接口,由子类决定实例化哪一个类。 • 特点:符合开闭原则,扩展性好,每新增一个产品都需要一个新的工厂类。 • 示例:CircleFactory implements ShapeFactory,调用 circleFactory.createShape() 创建对象。

用户不需要知道类的具体实现细节,直接使用工厂方法创建对象就行

java
package com.jasper.creational.factory.factoryMethod;

import com.jasper.creational.factory.simpleFactory.Shape;

interface ShapeFactory {
    Shape createShape();
}
java
package com.jasper.creational.factory.factoryMethod;

import com.jasper.creational.factory.simpleFactory.Circle;
import com.jasper.creational.factory.simpleFactory.Shape;

public class CircleFactory implements ShapeFactory {

    @Override
    public Shape createShape() {
        return new Circle();
    }
}
java
package com.jasper.creational.factory.factoryMethod;

import com.jasper.creational.factory.simpleFactory.Shape;
import com.jasper.creational.factory.simpleFactory.Square;

public class SquareFactory implements ShapeFactory{
    @Override
    public Shape createShape() {
        return new Square();
    }
}
java
package com.jasper.creational.factory.factoryMethod;

import com.jasper.creational.factory.simpleFactory.Shape;

public class FactoryMethodDemo {
    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();
    }
}