97色伦色在线综合视频,无玛专区,18videosex性欧美黑色,日韩黄色电影免费在线观看,国产精品伦理一区二区三区,在线视频欧美日韩,亚洲欧美在线中文字幕不卡

海淀區(qū)企業(yè)網站建設ip上海官網

鶴壁市浩天電氣有限公司 2026/01/24 12:25:44
海淀區(qū)企業(yè)網站建設,ip上海官網,wordpress 好看主題,學seo推廣Python 中的工廠模式#xff08;Factory Patterns#xff09; 工廠模式是一類創(chuàng)建型設計模式#xff0c;主要解決對象創(chuàng)建的問題#xff0c;讓對象的創(chuàng)建與使用分離#xff0c;提高代碼的靈活性和可擴展性。 在 GoF 的 23 種設計模式中#xff0c;與“工廠”相關的有兩…Python 中的工廠模式Factory Patterns工廠模式是一類創(chuàng)建型設計模式主要解決對象創(chuàng)建的問題讓對象的創(chuàng)建與使用分離提高代碼的靈活性和可擴展性。在 GoF 的 23 種設計模式中與“工廠”相關的有兩種工廠方法模式Factory Method抽象工廠模式Abstract Factory此外還有一種常見的簡化版簡單工廠Simple Factory嚴格來說不屬于 GoF 23 種但非常實用。下面用 Python 詳細講解這三種工廠模式。1. 簡單工廠Simple Factory最簡單的一種不屬于 GoF 標準模式但實際項目中使用最多。場景根據輸入類型創(chuàng)建不同類的實例。classDog:defspeak(self):returnWoof!classCat:defspeak(self):returnMeow!classAnimalFactory:staticmethoddefcreate_animal(animal_type:str):ifanimal_typedog:returnDog()elifanimal_typecat:returnCat()else:raiseValueError(fUnknown animal type:{animal_type})# 使用animalAnimalFactory.create_animal(dog)print(animal.speak())# Woof!優(yōu)點調用者無需知道具體類名缺點每次新增動物類型都需要修改工廠類違反開閉原則2. 工廠方法模式Factory Method定義一個創(chuàng)建對象的接口讓子類決定實例化哪個類。核心思想一個工廠類對應一種產品新增產品時新增對應的工廠子類。fromabcimportABC,abstractmethod# 產品接口classAnimal(ABC):abstractmethoddefspeak(self):pass# 具體產品classDog(Animal):defspeak(self):returnWoof!classCat(Animal):defspeak(self):returnMeow!# 工廠接口classAnimalFactory(ABC):abstractmethoddefcreate_animal(self)-Animal:pass# 具體工廠classDogFactory(AnimalFactory):defcreate_animal(self)-Animal:returnDog()classCatFactory(AnimalFactory):defcreate_animal(self)-Animal:returnCat()# 使用客戶端代碼defclient_code(factory:AnimalFactory):animalfactory.create_animal()print(animal.speak())client_code(DogFactory())# Woof!client_code(CatFactory())# Meow!優(yōu)點符合開閉原則新增動物只需新增類和工廠類無需修改現有代碼解耦客戶端只依賴抽象工廠適用場景知道要創(chuàng)建哪一組相關對象但想延遲到子類決定具體類3. 抽象工廠模式Abstract Factory提供一個接口用于創(chuàng)建一系列相關或相互依賴的對象而無需指定它們具體的類。場景需要創(chuàng)建產品族如不同風格的 UI 組件Windows 風格 vs Mac 風格fromabcimportABC,abstractmethod# 抽象產品classButton(ABC):abstractmethoddefrender(self):passclassCheckbox(ABC):abstractmethoddefcheck(self):pass# 具體產品 - Windows 風格classWinButton(Button):defrender(self):returnRender Windows buttonclassWinCheckbox(Checkbox):defcheck(self):returnCheck Windows checkbox# 具體產品 - Mac 風格classMacButton(Button):defrender(self):returnRender Mac buttonclassMacCheckbox(Checkbox):defcheck(self):returnCheck Mac checkbox# 抽象工廠classGUIFactory(ABC):abstractmethoddefcreate_button(self)-Button:passabstractmethoddefcreate_checkbox(self)-Checkbox:pass# 具體工廠classWinFactory(GUIFactory):defcreate_button(self):returnWinButton()defcreate_checkbox(self):returnWinCheckbox()classMacFactory(GUIFactory):defcreate_button(self):returnMacButton()defcreate_checkbox(self):returnMacCheckbox()# 客戶端代碼defclient_code(factory:GUIFactory):buttonfactory.create_button()checkboxfactory.create_checkbox()print(button.render())print(checkbox.check())# 根據操作系統(tǒng)選擇工廠importplatformifplatform.system()Windows:factoryWinFactory()else:factoryMacFactory()client_code(factory)優(yōu)點保證創(chuàng)建的產品是兼容的同一族缺點新增產品如添加 Slider需要修改所有工廠擴展性差三種工廠模式對比模式復雜度擴展性加新產品擴展性加新產品族典型場景簡單工廠低差修改工廠好類型不多、變化不頻繁工廠方法中好差每種產品獨立經常擴展新類型抽象工廠高差修改所有工廠好需要產品族如主題、風格Python 中的實用建議Python 是動態(tài)語言很多時候可以用函數或字典映射代替簡單工廠animals{dog:Dog,cat:Cat}animalanimals[animal_type]()對于配置驅動的項目如插件系統(tǒng)工廠方法 注冊機制很常見classAnimalRegistry:factories{}classmethoddefregister(cls,name,factory):cls.factories[name]factoryclassmethoddefcreate(cls,name):returncls.factories[name]().create_animal()AnimalRegistry.register(dog,DogFactory)animalAnimalRegistry.create(dog)如果你想看更實際的例子如數據庫連接工廠、配置文件解析工廠或者某個模式的變體請告訴我
版權聲明: 本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若內容造成侵權/違法違規(guī)/事實不符,請聯(lián)系我們進行投訴反饋,一經查實,立即刪除!

建設網站所需要什么百度不收錄網站

建設網站所需要什么,百度不收錄網站,石家莊網站建設公司,寧波seo排名如何優(yōu)化WindowResizer#xff1a;5分鐘掌握智能窗口管理的實用指南 【免費下載鏈接】WindowResizer 一個

2026/01/23 06:34:01

做網站用小動畫wordpress怎么添加會員中心

做網站用小動畫,wordpress怎么添加會員中心,大學生創(chuàng)業(yè)50個小案例,wordpress 輪廓在《Black Mirror》中#xff0c;算法為了利潤操控現實。而在 2025 年#xff0c;

2026/01/23 02:40:01

昌吉網站建設網站開發(fā)中的qq登錄

昌吉網站建設,網站開發(fā)中的qq登錄,網站備案 圖標,湖北網站建設推薦LoRA 微調自動化實踐#xff1a;lora-scripts 全流程解析 在生成式 AI 快速落地的今天#xff0c;如何讓大模型

2026/01/21 15:57:01

波萊網站開發(fā)wordpress comment數量

波萊網站開發(fā),wordpress comment數量,百度怎么做網站域名,主圖詳情頁設計sward是一款國內開源免費、簡潔易用的知識庫管理工具。包括知識庫管理、文檔管理、markdown等功能。本文將

2026/01/23 09:42:02

沈陽網站建設工作室有沒有專門做外包銷售的公司

沈陽網站建設工作室,有沒有專門做外包銷售的公司,自學網站開發(fā)條件,python 網站架構體測成績計算器小程序介紹 一、基本信息 小程序名稱#xff1a;體測成績計算器 核心功能#xff1a;全國學生體

2026/01/23 09:33:01

大型行業(yè)網站濟南正規(guī)做網站公司

大型行業(yè)網站,濟南正規(guī)做網站公司,文案網站策劃書,wordpress綁定手機版徹底告別ThinkPad風扇噪音#xff1a;TPFanCtrl2智能散熱終極指南 【免費下載鏈接】TPFanCtrl2

2026/01/23 11:49:01