Skip to main content

工厂方法模式

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

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

package com.jasper.creational.factory.factoryMethod;

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

interface ShapeFactory {
Shape createShape();
}

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();
}
}

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();
}
}
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();
}
}