工廠方法模式簡稱為工廠模式萧求,又可稱為虛擬構(gòu)造器模式或多態(tài)工廠模式。工廠方法模式是一種類創(chuàng)建型模式顶瞒。在工廠方法模式中夸政,工廠父類負責定義創(chuàng)建產(chǎn)品對象的公共接口,而工廠子類負責生成具體的產(chǎn)品對象榴徐,這樣做的目的是將產(chǎn)品類的實例化操作延遲到工廠子類中完成守问,即通過工廠子類來確定究竟應該實例化哪一個具體產(chǎn)品類匀归。
概述:定義一個用于創(chuàng)建對象的接口,但是讓子類決定將哪一個類實例化耗帕。工廠方法模式讓一個類的實例化延遲到其子類穆端。
工廠方法模式結(jié)構(gòu)與實現(xiàn)
1.Factory(抽象工廠):在抽象工廠類中聲明了工廠方法,用于返回生產(chǎn)的產(chǎn)品仿便。抽象工廠是工廠方法模式的核心体啰,所有創(chuàng)建對象的工廠類都必須實現(xiàn)該接口。
public interface Factory {
public Product factoryMethod();
}
2.ConcreteFactory(具體工廠):它是抽象工廠類的子類(實現(xiàn)類)嗽仪,實現(xiàn)了在抽象工廠中聲明的工廠方法荒勇,并返回一個具體產(chǎn)品類的實例。
public class ConcreteFactory implements Factory {
@Override
public Product factoryMethod() {
//父類的引用指向子類對象
return new ConcreteProduct();
}
}
3.Product(抽象產(chǎn)品):他是定義產(chǎn)品的接口闻坚,是工廠方法模式所創(chuàng)建對象的超類型沽翔,也就是產(chǎn)品對象的公共父類。
public interface Product {
/**
* 創(chuàng)建產(chǎn)品
*/
public void createProduct();
}
4.ConcreteProduct(具體產(chǎn)品):它實現(xiàn)類抽象產(chǎn)品接口窿凤,某種類型的具體產(chǎn)品由專門的具體工廠創(chuàng)建仅偎,且具體工廠和具體產(chǎn)品之間一一對應。
public class ConcreteProduct implements Product {
@Override
public void createProduct() {
System.out.println("創(chuàng)建具體產(chǎn)品雳殊!");
}
}
5.Test
public class Test {
public static void main(String[] args) {
Factory factory=new ConcreteFactory();
Product product=factory.factoryMethod();
product.createProduct();
}
}