# 前言 本系列的第三篇 這次是抽象工廠模式(Abstract Factory) # 抽象工廠模式 一個工廠的工廠,提供一個介面來創建一系列相關或依賴的物件,而無需指定具體的類別。 此模式的擴展性最強,可以更方便地管理不同系列的物件。 ```python= from abc import ABC, abstractmethod class CPU(ABC): @abstractmethod def cpu_info(self): ... class GPU(ABC): @abstractmethod def gpu_info(self): ... class IntelCPU(CPU): def cpu_info(self): return "model: i7-14700" class IntelGPU(GPU): def gpu_info(self): return "model: Arc A770" class AMDCPU(CPU): def cpu_info(self): return "model: R7 7700" class AMDGPU(GPU): def gpu_info(self): return "model: RX 7900 XTX" class HardwareFactory(ABC): @abstractmethod def create_cpu(self): ... @abstractmethod def create_gpu(self): ... class IntelSeries(HardwareFactory): def create_cpu(self): return IntelCPU() def create_gpu(self): return IntelGPU() class AMDSeries(HardwareFactory): def create_cpu(self): return AMDCPU() def create_gpu(self): return AMDGPU() if __name__ == '__main__': amd_factory = AMDSeries() intel_factory = IntelSeries() amd_cpu = amd_factory.create_cpu() amd_gpu = amd_factory.create_gpu() amd_cpu_info = amd_cpu.cpu_info() amd_gpu_info = amd_gpu.gpu_info() print(f"AMD CPU: {amd_cpu_info}; AMD GPU: {amd_gpu_info}") intel_cpu = intel_factory.create_cpu() intel_gpu = intel_factory.create_gpu() intel_cpu_info = intel_cpu.cpu_info() intel_gpu_info = intel_gpu.gpu_info() print(f"Intel CPU: {intel_cpu_info}; Intel GPU: {intel_gpu_info}") ``` # 心得 這個模式剛開始看的時候覺得蠻抽象的 範例也沒怎麼想到 但仔細看了UML後發現並不會很難理解 有需要的可以參考以下網址 https://ithelp.ithome.com.tw/articles/10208955 上面的網址使用車作範例 但因為我不懂車,~~壓根就看不懂他在寫什麼~~ 就使用較熟悉的電腦廠商來作範例 ~~還好intel現在有做GPU~~