工廠模式是一種創建型設計模式,它提供了一種將對象的創建與使用分離的方法。在工廠模式中,我們通過工廠類來創建對象,而不是直接在客戶端代碼中使用 new
關鍵字來創建對象。以下是一個簡單的Java工廠模式示例代碼:
產品接口
首先,我們定義一個產品接口,表示工廠要創建的對象:
// 產品接口
public interface Product {void operation();
}
具體產品類
然后,我們定義一些實現產品接口的具體產品類:
// 具體產品類A
public class ConcreteProductA implements Product {@Overridepublic void operation() {System.out.println("Concrete Product A operation");}
}// 具體產品類B
public class ConcreteProductB implements Product {@Overridepublic void operation() {System.out.println("Concrete Product B operation");}
}
工廠接口
接著,我們定義一個工廠接口,用于創建產品:
// 工廠接口
public interface Factory {Product createProduct();
}
具體工廠類
最后,我們定義具體的工廠類來創建產品對象:
// 具體工廠類A,用于創建具體產品類A的實例
public class ConcreteFactoryA implements Factory {@Overridepublic Product createProduct() {return new ConcreteProductA();}
}// 具體工廠類B,用于創建具體產品類B的實例
public class ConcreteFactoryB implements Factory {@Overridepublic Product createProduct() {return new ConcreteProductB();}
}
客戶端代碼
現在,我們可以在客戶端代碼中使用工廠來創建產品對象,而不需要關心具體的產品類:
public class Client {public static void main(String[] args) {// 創建工廠A,并使用它創建具體產品A的實例Factory factoryA = new ConcreteFactoryA();Product productA = factoryA.createProduct();productA.operation();// 創建工廠B,并使用它創建具體產品B的實例Factory factoryB = new ConcreteFactoryB();Product productB = factoryB.createProduct();productB.operation();}
}
示例說明
- 客戶端代碼只與工廠接口和產品接口打交道,不直接與具體產品類耦合,從而實現了解耦。
- 如果要添加新的產品,只需創建一個新的具體產品類和一個對應的具體工廠類即可,無需修改現有的代碼,符合開閉原則。
- 工廠模式提供了一種靈活的方法來創建對象,可以根據具體的需求選擇使用哪個具體工廠來創建產品對象。