初識這個詞語,并不知道他說的是什么,而將這一章看完之后,才初步了解到什么是簡單工廠模式,以及為什么會出現這種模式,下面先看看什么是簡單工廠模式吧:
***********************************************************************************簡單工廠模式***********************************************************************************
從設計模式的類型上來說,簡單工廠模式是屬于創建型模式,又叫做靜態工廠方法(StaticFactory Method)模式,但不屬于23種GOF設計模式之一。簡單工廠模式是由一個工廠對象決定創建出哪一種產品類的實例。簡單工廠模式是工廠模式家族中最簡單實用的模式,可以理解為是不同工廠模式的一個特殊實現。
簡單工廠模式的UML類圖
簡單工廠模式的實質是由一個工廠類根據傳入的參數,動態決定應該創建哪一個產品類(這些產品類繼承自一個父類或接口)的實例。
該模式中包含的角色及其職責
工廠(Creator)角色
簡單工廠模式的核心,它負責實現創建所有實例的內部邏輯。工廠類可以被外界直接調用,創建所需的產品對象。
抽象產品(Product)角色
簡單工廠模式所創建的所有對象的父類,它負責描述所有實例所共有的公共接口。
具體產品(Concrete Product)角色
是簡單工廠模式的創建目標,所有創建的對象都是充當這個角色的某個具體類的實例。
************************************************************************************************************************************************************************************
在對簡單工廠模式有了一定的了解之后,下面談談在學習這一章的過程中問題及感受:
起初是小菜面試時遇到了一道編程題,要求是“請用C++、Java、C#或VB.NET任意一種面向對象語言實現一個計算器控制臺程序,要求輸入兩個數和運算符號,得到結果。”在看了這道題之后,我想了好一會,自我感覺憑我現在的能力,來實現這個程序似乎可以說不可能,這其中涉及到好多的算法,并且我對面向對象還沒有徹底的掌握,一個字:難!
在看到小菜編的程序之后,我還是挺佩服的,對于我這個初學C#的“小小菜”起碼不可能這么快的編出來??纯葱〔司幍拇a吧,著實發現了好多問題:
1.代碼中的變量命名并不規范,沒有統一的標準;
2.在判斷語句上多次重復,使得計算機做了多次的無用功;
3.除法運算中沒有考慮到除數為0時的情況;
4.用戶輸入的數字、字符沒有限制;
5.可擴展性差,代碼不能多次復用等。
在大鳥的指導下,小菜不斷的更新著代碼,將冗余的、無用的代碼排除掉,并將業務邏輯和界面邏輯分開,讓他們之間的耦合度下降,只有分離開,才可以達到容易維護或擴展。而后,大鳥還指導小菜怎樣利用面向對象來設計這個控制臺程序,從封裝、繼承、多態方面逐一介紹,從而由最單一的只能實現功能的一大段冗余代碼,進化為將加減乘除類均分開的繼承運算類,他們均是繼承Operation運算類的各個子類。然而,在利用簡單工廠模式之后,只需要輸入運算符號,工廠就實例化出合適的對象,通過多態,返回父類的方式實現了計算器的結果。這樣,將來不管是增加功能,還是修改功能,都不會影響其他的體系。
嘖嘖,這次又學到了不少的知識,努力中…
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
