更新時間:2023-07-05 來源:黑馬程序員 瀏覽量:
工廠模式和設(shè)計模式是兩個不同的概念。
1.工廠模式(Factory Pattern)是一種創(chuàng)建型設(shè)計模式,旨在通過工廠類來創(chuàng)建對象,而不是直接在代碼中實例化對象。工廠模式將對象的創(chuàng)建與使用分離,客戶端只需要通過工廠類來獲取所需的對象,而無需了解對象的具體創(chuàng)建過程。工廠模式通常包括以下幾個角色:
·抽象產(chǎn)品(Abstract Product):定義產(chǎn)品的共同接口或抽象類。
·具體產(chǎn)品(Concrete Product):實現(xiàn)抽象產(chǎn)品接口,是工廠所創(chuàng)建的對象。
·抽象工廠(Abstract Factory):定義創(chuàng)建產(chǎn)品的接口,可以包含多個創(chuàng)建產(chǎn)品的方法。
·具體工廠(Concrete Factory):實現(xiàn)抽象工廠接口,負(fù)責(zé)實際創(chuàng)建產(chǎn)品。
接下來筆者用一段Java代碼,具體演示下工廠模式的使用:
// 抽象產(chǎn)品
interface Product {
void operation();
}
// 具體產(chǎn)品A
class ConcreteProductA implements Product {
public void operation() {
System.out.println("ConcreteProductA operation");
}
}
// 具體產(chǎn)品B
class ConcreteProductB implements Product {
public void operation() {
System.out.println("ConcreteProductB operation");
}
}
// 抽象工廠
interface Factory {
Product createProduct();
}
// 具體工廠A,用于創(chuàng)建具體產(chǎn)品A
class ConcreteFactoryA implements Factory {
public Product createProduct() {
return new ConcreteProductA();
}
}
// 具體工廠B,用于創(chuàng)建具體產(chǎn)品B
class ConcreteFactoryB implements Factory {
public Product createProduct() {
return new ConcreteProductB();
}
}
// 客戶端代碼
public class Client {
public static void main(String[] args) {
Factory factoryA = new ConcreteFactoryA();
Product productA = factoryA.createProduct();
productA.operation();
Factory factoryB = new ConcreteFactoryB();
Product productB = factoryB.createProduct();
productB.operation();
}
}
在上述代碼中,AbstractProduct表示產(chǎn)品的抽象接口,ConcreteProductA和ConcreteProductB是具體的產(chǎn)品實現(xiàn)類,AbstractFactory是工廠的抽象接口,ConcreteFactoryA和ConcreteFactoryB是具體的工廠實現(xiàn)類??蛻舳送ㄟ^具體的工廠來創(chuàng)建相應(yīng)的產(chǎn)品對象。
2.設(shè)計模式(Design Pattern)是一種廣泛使用的解決軟件設(shè)計問題的經(jīng)驗總結(jié),它提供了一套在特定情境中解決問題的指導(dǎo)原則和實踐。設(shè)計模式不是具體的代碼實現(xiàn),而是一種思想或模式。工廠模式只是眾多設(shè)計模式中的一種。常見的設(shè)計模式還包括單例模式、觀察者模式、策略模式等。
設(shè)計模式關(guān)注的是整個系統(tǒng)的結(jié)構(gòu)和交互方式,提供了一種在不同場景下靈活、可擴展和可維護的軟件架構(gòu)。設(shè)計模式通過定義角色和它們之間的關(guān)系,以及解決特定問題的方法,幫助開發(fā)人員更好地組織和管理代碼。
接下來我們再看一個使用設(shè)計模式的示例代碼,具體展示了單例模式的實現(xiàn):
// 單例模式
class Singleton {
private static Singleton instance;
private Singleton() {
// 私有構(gòu)造函數(shù)
}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
// 客戶端代碼
public class Client {
public static void main(String[] args) {
Singleton singleton = Singleton.getInstance();
// 使用singleton對象進行操作
}
}
在上述代碼中,Singleton類使用了單例模式,通過私有的構(gòu)造函數(shù)和靜態(tài)的getInstance方法,保證只能創(chuàng)建一個Singleton實例。客戶端通過Singleton.getInstance()方法獲取該實例。
綜上所述,工廠模式是設(shè)計模式中的一種具體實現(xiàn),它解決了對象的創(chuàng)建問題,而設(shè)計模式是一種更廣泛的概念,用于指導(dǎo)整個系統(tǒng)的設(shè)計和組織。