創建型模式之Abstract Factory(抽象工廠)
摘要:
本文介紹了抽象工廠模式(Abstract Factory),它是一種創建型設計模式,提供了一種創建一系列相關對象的接口而無需指定具體類。文章通過手機工廠示例進行說明,展示小米和華為兩個工廠分別生產不同類型產品(屏幕、芯片、鍵盤等)的實現過程。代碼演示了如何定義抽象工廠接口、具體工廠類和產品類,并展示了運行結果。該模式適用于需要創建產品族且不依賴具體產品類的情況,能夠提高系統的靈活性和可擴展性。
前言
創建型:
1.簡單工廠 -->> 2.工廠方法 -->> 3.抽象工廠 -->> 4.生成器 -->> 5.原生 -->> 6.單例
1,接著23種設計模式,創建型模式的抽象工廠開始講解
2,用自己的話理解是:抽象工廠【是生產一類產品或一系列相關的工廠,不需要指定具體的類】,比如手機工廠:小米手機工廠、華為手機工廠、OPPO手機工廠…
1)意圖
提供一個創建一系列相關或相互依賴對象的接口,而無須指定它們具體的類。
2)結構
代碼如下:
/*** 抽象工廠demo*/
public class AbstractFactory {public static void main(String[] args) {// 小米生產線 開始制造System.out.println("小米生產線 開始制造-------------------------");Factory factory1 = new ConcreteFactory1();factory1.createProductA().info();factory1.createProductB().info();System.out.println("------------------分界線----------------------");// 華為生產線 繼續開始制造System.out.println("華為生產線 繼續開始制造-------------------------");Factory factory2 = new ConcreteFactory2();factory2.createProductA().info();factory2.createProductB().info();}}interface Factory{// 小米手機生產線ProductA createProductA();// 華為電腦生產線ProductB createProductB();
}/*** 華為電腦工廠*/
class ConcreteFactory2 implements Factory{@Overridepublic ProductA createProductA() {return new ProductA2();}@Overridepublic ProductB createProductB() {return new ProductB2();}
}/*** 小米手機工廠*/
class ConcreteFactory1 implements Factory{@Overridepublic ProductA createProductA() {return new ProductA1();}@Overridepublic ProductB createProductB() {return new ProductB1();}
}/*** 為一類產品聲明一個接口 比如小米手機生產線*/
interface ProductA{void info();
}/*** 為另一類產品聲明一個接口 比如華為手機生產線*/
interface ProductB{void info();
}class ProductB2 implements ProductB{@Overridepublic void info() {System.out.println("產品 B2 華為電腦顯示器");}
}class ProductB1 implements ProductB{@Overridepublic void info() {System.out.println("產品 B1 小米芯片");}
}class ProductA1 implements ProductA{@Overridepublic void info() {System.out.println("產品 A1 小米屏幕");}
}class ProductA2 implements ProductA{@Overridepublic void info() {System.out.println("產品 A2 華為筆記本鍵盤");}
}
運行結果:如下
喜歡我的文章記得點個在看,或者點贊,持續更新中ing…