新聞中心
工廠模式是一種創(chuàng)建型設(shè)計模式,它提供了一種在不指定具體類的情況下創(chuàng)建對象的方式,在Java中,工廠模式主要有兩種實現(xiàn)方式:簡單工廠模式和工廠方法模式,下面將詳細介紹這兩種工廠模式的使用方法。

十載的岳普湖網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。成都全網(wǎng)營銷的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整岳普湖建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)公司從事“岳普湖網(wǎng)站設(shè)計”,“岳普湖網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
1、簡單工廠模式
簡單工廠模式又稱為靜態(tài)工廠模式,它是一種創(chuàng)建型設(shè)計模式,提供了一種在不指定具體類的情況下創(chuàng)建對象的方式,在Java中,簡單工廠模式主要有兩種實現(xiàn)方式:靜態(tài)方法和實例方法。
(1)靜態(tài)方法
靜態(tài)方法是在類級別上定義的方法,可以直接通過類名調(diào)用,在簡單工廠模式中,我們可以使用靜態(tài)方法來創(chuàng)建對象,下面是一個簡單的例子:
public class SimpleFactory {
public static Product createProduct(String type) {
if ("A".equals(type)) {
return new ConcreteProductA();
} else if ("B".equals(type)) {
return new ConcreteProductB();
} else {
throw new IllegalArgumentException("Invalid product type");
}
}
}
在這個例子中,我們定義了一個SimpleFactory類,它有一個靜態(tài)方法createProduct,該方法接受一個字符串參數(shù)type,根據(jù)type的值創(chuàng)建并返回相應(yīng)的產(chǎn)品對象,如果傳入的type值無效,則拋出異常。
(2)實例方法
實例方法是在類的實例上定義的方法,需要先創(chuàng)建類的實例才能調(diào)用,在簡單工廠模式中,我們也可以使用實例方法來創(chuàng)建對象,下面是一個簡單的例子:
public class SimpleFactory {
public Product createProduct(String type) {
if ("A".equals(type)) {
return new ConcreteProductA();
} else if ("B".equals(type)) {
return new ConcreteProductB();
} else {
throw new IllegalArgumentException("Invalid product type");
}
}
}
在這個例子中,我們定義了一個SimpleFactory類,它有一個實例方法createProduct,該方法接受一個字符串參數(shù)type,根據(jù)type的值創(chuàng)建并返回相應(yīng)的產(chǎn)品對象,如果傳入的type值無效,則拋出異常。
2、工廠方法模式
工廠方法模式是一種創(chuàng)建型設(shè)計模式,它提供了一種在不指定具體類的情況下創(chuàng)建對象的方式,在Java中,工廠方法模式主要有兩種實現(xiàn)方式:接口和抽象類。
(1)接口
接口是一種特殊的抽象類型,它只包含抽象方法和常量,在工廠方法模式中,我們可以使用接口來定義產(chǎn)品的創(chuàng)建方法,下面是一個簡單的例子:
public interface Product {
void doSomething();
}
在這個例子中,我們定義了一個Product接口,它有一個抽象方法doSomething,接下來,我們可以為不同的產(chǎn)品實現(xiàn)這個接口:
public class ConcreteProductA implements Product {
@Override
public void doSomething() {
System.out.println("ConcreteProductA is doing something");
}
}
public class ConcreteProductB implements Product {
@Override
public void doSomething() {
System.out.println("ConcreteProductB is doing something");
}
}
我們可以創(chuàng)建一個工廠類來根據(jù)接口創(chuàng)建產(chǎn)品對象:
public class Factory {
public static Product createProduct(String type) {
if ("A".equals(type)) {
return new ConcreteProductA();
} else if ("B".equals(type)) {
return new ConcreteProductB();
} else {
throw new IllegalArgumentException("Invalid product type");
}
}
}
在這個例子中,我們定義了一個Factory類,它有一個靜態(tài)方法createProduct,該方法接受一個字符串參數(shù)type,根據(jù)type的值創(chuàng)建并返回相應(yīng)的產(chǎn)品對象,如果傳入的type值無效,則拋出異常。
(2)抽象類
抽象類是一種特殊的類,它不能被實例化,只能被繼承,在工廠方法模式中,我們可以使用抽象類來定義產(chǎn)品的創(chuàng)建方法,下面是一個簡單的例子:
public abstract class AbstractProduct {
abstract void doSomething();
}
在這個例子中,我們定義了一個抽象類AbstractProduct,它有一個抽象方法doSomething,接下來,我們可以為不同的產(chǎn)品繼承這個抽象類:
public class ConcreteProductA extends AbstractProduct {
@Override
public void doSomething() {
System.out.println("ConcreteProductA is doing something");
}
}
public class ConcreteProductB extends AbstractProduct {
@Override
public void doSomething() {
System.out.println("ConcreteProductB is doing something");
}
}
網(wǎng)頁名稱:java工廠模式三種詳解
轉(zhuǎn)載來源:http://fisionsoft.com.cn/article/dhoeccj.html


咨詢
建站咨詢
