2022年1月25日 星期二

[Geroge]設計模式-簡單工廠模式

工廠模式: 1 簡單工廠 2工廠方法 3抽象工廠

簡單工廠模式(Simple Factory Pattern)

屬於類的創新型模式, 又叫靜態工廠方法模式(Static Factory Method Pattern)

是通過專門定義一個類來負責創建其他類的實例, 被創建的實例通常都具有共同的父類









工廠角色(SimpleFactory): 這是簡單工廠模式的核心, 由它負責創建所有的類的內部邏輯, 當然工廠類必須能夠被外界調用, 創建所需要的產品對象

抽象產品角色(IProduct): 簡單工廠模式所創建的所有對象的父類, 注意, 這裡的父類可以是介面, 也可以是抽象類, 它負責描述所有實例所共有的公共介面

具體產品角色(Concrete Product): 簡單工廠所創建的具體實例對象, 這些具體的產品往往都擁有相同的父類

ex 有一個麥當勞工廠, 當顧客需要麥香雞, 或是薯條的時候, 只要來找麥當勞要食物, 就可以, 他並不需要真正知道麥香雞會是薯條的生產過程































簡單工廠優點

工廠類是整個模式的關鍵, 它包含必要的判斷邏輯, 能夠根據外界給定的信息, 決定究竟應該創建哪個體系的對象, 用戶在使用時可以直接根據工廠類去創建所需的實例, 而無須了解這些對象是如何創建以及如何組織的, 有利於整體軟體體系結構的優化

簡單工廠缺點

由於工廠類集中所有實例的創建邏輯, 這就直接導致依但這個工程出了問題, 所有的客戶端都會受到牽連, 並且由於簡單工廠模式的產品基於一個共同的抽象類, 或是接口, 這樣一來, 一旦產品種類增加, 有不同的產品接口或是抽象類的時候, 工廠類就需要判斷何時何種類的產品, 這就和創建何種類產品的產品鄉混淆再一起, 違反了單一職責, 導致系統喪失靈活性和可維護性,同時也違背了開閉原則, 就是違背了"系統對擴展開放, 對修改關閉" 的原則, 因為當我新增一個攢品的時候, 就必須要修改工廠類, 相應的工廠類就需要重新編譯一遍

簡單工廠實際應用

JDBC是SUN提供一套數據庫連接介面API, 它利用Java語言提供簡單一致來訪問各種關聯式資料庫, 對於我們來說, 增刪查改, 我們只需要調用統一的JDBC介面, 而實際的實現ex mysql或是oracle都是由JDBC工廠把它創建出來, 我們來使用這樣我們客戶端和實際的數據庫就達到一個解耦的目的, 這樣我們去替換數據庫的時候就不需要改變真實的程式碼, 因為所有的差別都被封閉在這個簡單工廠裡面








https://www.youtube.com/watch?v=cA-vt0Nf1nQ&list=PLGmd9-PCMLhb16ZxeSy00qUsBazXgJyfM&index=12

https://github.com/iw5420/geroge-design-pattern

沒有留言:

張貼留言

[leetcode] [KMP] KMP

ABCDABD... ABCDABF... 簡單的說, 傳統解兩字串匹配部分 可能會來個雙迴圈, 哀個比對, 當不匹配的時候, 會將下方列再後移1位 然後不匹配再後移 然而 如果像上放已經有4個屬於匹配的字串, 她就應該直接往後移四位來匹配, 而不是只移動1位 隱藏的思維是, 當...