工厂方法模式简称为工厂模式,又可称为虚拟构造器模式或多态工厂模式。工厂方法模式是一种类创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。
概述:定义一个用于创建对象的接口,但是让子类决定将哪一个类实例化。工厂方法模式让一个类的实例化延迟到其子类。
工厂方法模式结构与实现
1.Factory(抽象工厂):在抽象工厂类中声明了工厂方法,用于返回生产的产品。抽象工厂是工厂方法模式的核心,所有创建对象的工厂类都必须实现该接口。
public interface Factory {
public Product factoryMethod();
}
2.ConcreteFactory(具体工厂):它是抽象工厂类的子类(实现类),实现了在抽象工厂中声明的工厂方法,并返回一个具体产品类的实例。
public class ConcreteFactory implements Factory {
@Override
public Product factoryMethod() {
//父类的引用指向子类对象
return new ConcreteProduct();
}
}
3.Product(抽象产品):他是定义产品的接口,是工厂方法模式所创建对象的超类型,也就是产品对象的公共父类。
public interface Product {
/**
* 创建产品
*/
public void createProduct();
}
4.ConcreteProduct(具体产品):它实现类抽象产品接口,某种类型的具体产品由专门的具体工厂创建,且具体工厂和具体产品之间一一对应。
public class ConcreteProduct implements Product {
@Override
public void createProduct() {
System.out.println("创建具体产品!");
}
}
5.Test
public class Test {
public static void main(String[] args) {
Factory factory=new ConcreteFactory();
Product product=factory.factoryMethod();
product.createProduct();
}
}