ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

设计模式-创建型模式-工厂方法模式

2026/9/21 2:37:37 拓冰建站 浏览量
设计模式-创建型模式-工厂方法模式

工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类。工厂方法模式又简称为工厂模式(Factory Pattern),又可称作虚拟构造器模式(Virtual Constructor Pattern)或多态工厂模式(Polymorphic Factory Pattern)。工厂方法模式是一种类创建型模式。

弥补了简单工厂模式,每增加一个产品就增加一个分支的缺点,简单工厂不符合封闭-开放原则,工厂方法模式增加新的产品时,需要增加新的产品类与工厂类,不改变原有程序。

首先,定义一个创建产品对象的接口(或者抽象类):
public interface Product {void operation();
}然后,创建实现了Product接口的具体产品类:
public class ConcreteProductA implements Product {@Overridepublic void operation() {System.out.println("ConcreteProductA operation");}
}public class ConcreteProductB implements Product {@Overridepublic void operation() {System.out.println("ConcreteProductB operation");}
}接下来,定义一个抽象工厂类,其中包含一个创建产品对象的工厂方法:
public abstract class Creator {public abstract Product factoryMethod();public void useProduct(Product product) {product.operation();}
}然后,创建继承了抽象工厂类并实现了工厂方法的具体工厂类:
public class ConcreteCreatorA extends Creator {@Overridepublic Product factoryMethod() {return new ConcreteProductA();}
}public class ConcreteCreatorB extends Creator {@Overridepublic Product factoryMethod() {return new ConcreteProductB();}
}最后,客户端代码使用具体工厂类来创建产品对象,并调用其方法:
public class Client {public static void main(String[] args) {Creator creatorA = new ConcreteCreatorA();Product productA = creatorA.factoryMethod();creatorA.useProduct(productA);Creator creatorB = new ConcreteCreatorB();Product productB = creatorB.factoryMethod();creatorB.useProduct(productB);}
}