<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                從設計模式的類型來說,簡單工廠模式是屬于創建性模式,又叫做靜態工廠方法模式,但不屬于23中[GOF](http://baike.baidu.com/link?url=uPsikCi-gAyc4SH5sLMa-a5VUL_tN9V9hzP5xGTvX7qhe4U7RybvWR56lvOVHC8H_uC3AbgubDoc6joxNMPTaq)設計模式之一,簡單的工廠模式是由一個工廠對象決定創建出哪一種產品類的實例,簡單工廠模式是工廠模式家族中最簡單實用的模式,可以理解為是不同工廠模式的一個特殊實現。 那么到底什么是簡單工廠模式?我們中午在中快食堂吃飯,中快食堂滿足了我們的需求,這里的中快食堂就是一個簡單的工廠,在現實生活中工廠是負責生產產品的,,同樣在設計模式中,簡單工廠模式我們也可以理解為負責生產對象的一個類,我們平常編程中,當使用new關鍵字創建一個對象時,此時該類就依賴與這個對象,也就是她們之間的耦合度高,當需求變化時,我們就不得不去修改此類的源碼,此時我們可以運用oo很重要的原則去解決這一問題,該原則就是封裝改變,自然也就要找到改變的代碼,然后把改變的代碼用類來封裝,這樣的一種思路也就是我們簡單工廠模式的實現方式了,舉個生活中的例子。 寒暑假食堂沒有開門,提高班的孩子,有的在外面吃飯,當然手巧的孩子也可以自己在家做飯吃,但是自己要做飯比較麻煩哈,因為要去元辰超市買菜,油鹽醬醋肯定少不了,然而,也可以選擇去九之巢,燒餅,灌餅,煎餅隨你挑,這里,每個小攤位就充當簡單工廠的角色,那么這些生活中我們每天都在經歷的事情,在我們的編程世界中又是如何實現的呢。 自己做飯的情況: ~~~ ///??? ///?自己做飯的情況?? ///?沒有簡單工廠之前,客戶想吃什么菜只能自己炒的?? ///??? public?class?Customer?? {?? ????///??? ????///?燒菜方法?? ????///??? ????///??? ????///??? ????public?static?Food?Cook(string?type)?? ????{?? ????????Food?food?=?null;?? ????????//?珊珊說:我想吃酸辣土豆絲怎么辦??? ????????//?瀾瀾說:那你就自己燒啊!?? ????????//?珊珊說:?好吧,那就自己做吧!?? ????????if?(type.Equals("酸辣土豆絲"))?? ????????{?? ????????????food?=?new?ChiliSourPotato();?? ????????}?? ????????//?我還想吃土姜汁皮蛋,?這個還是得自己做?? ????????//?我覺得自己做好麻煩,如果能有人幫我做就好了??? ????????else?if?(type.Equals("姜汁皮蛋"))?? ????????{?? ????????????food?=?new?PreservedEggSinGingerSauce();?? ????????}?? ????????return?food;?? ????}?? ???????static?void?Main(string[]?args)?? ????{?? ?????????? ????????Food?food1?=?Cook("酸辣土豆絲");?? ????????food1.Print();?? ????????Food?food2?=?Cook("姜汁皮蛋");?? ????????food1.Print();?? ????????Console.Read();?? ????}?? }?? ///??? ///?菜抽象類?? ///??? public?abstract?class?Food?? {?? ????//?輸出點了什么菜?? ????public?abstract?void?Print();?? }?? ///??? ///?酸辣土豆絲這道菜?? ///??? public?class??ChiliSourPotato?:?Food?? {?? ????public?override?void?Print()?? ????{?? ????????Console.WriteLine("一份酸辣土豆絲!");?? ????}?? }?? ///??? ///?姜汁皮蛋這道菜?? ///??? public?class?PreservedEggSinGingerSauce?:?Food?? {?? ????public?override?void?Print()?? ????{?? ????????Console.WriteLine("一份姜汁皮蛋");?? ????}?? }?? ~~~ 毛爺爺打江山的時候說,自己動手風衣足食,緊張的學習之后,自己動手做事,也不失為美事一件,但是有時候重復做一件事兒,總想著要買什么菜啊,中午做什么啊,就會感到厭煩,保不準做飯的時候就會把鹽當成白糖,那午飯就......,所以,偶爾我們可以去小餐館,呼呼,這里的餐館就相當于簡單工廠,我們可以把這些操作交給餐館去做,此時消費者對菜的依賴關系從直接變成間接,這樣就實現了面向對象的另一個原則,降低對象之間的耦合度。每次去餐館吃飯,你想到了么?這個也可以在我們的編程世界中實現,代碼如下:? ? ? ?? ~~~ ///??? ???///?顧客充當客戶端,負責調用簡單工廠來生產對象?? ???///?即客戶點菜,廚師(相當于簡單工廠)負責燒菜(生產的對象)?? ???///??? ???class?Customer?? ???{?? ???????static?void?Main(string[]?args)?? ???????{?? ???????????//?客戶想點酸辣土豆絲?????????? ???????????Food?food1?=?FoodSimpleFactory.ChiliSourPotatod("酸辣土豆絲");?? ???????????food1.Print();?? ?? ???????????//?客戶想點一個姜汁皮蛋?? ???????????Food?food2?=?FoodSimpleFactory.?PreservedEggSinGingerSauce("姜汁皮蛋");?? ???????????food2.Print();?? ?? ???????????Console.Read();?? ???????}?? ???}?? ?? ???///??? ???///?菜抽象類?? ???///??? ???public?abstract?class?Food?? ???{?? ???????//?輸出點了什么菜?? ???????public?abstract?void?Print();?? ???}?? ?? ???///??? ???///?酸辣土豆絲這道菜?? ???///??? ???public?class?ChiliSourPotatod?:?Food?? ???{?? ???????public?override?void?Print()?? ???????{?? ???????????Console.WriteLine("一份酸辣土豆絲!");?? ???????}?? ???}?? ?? ???///??? ???///?姜汁皮蛋這道菜?? ???///??? ???public?class?PreservedEggSinGingerSauce?:?Food?? ???{?? ???????public?override?void?Print()?? ???????{?? ???????????Console.WriteLine("一份姜汁皮蛋");?? ???????}?? ???}?? ?? ???///??? ???///?簡單工廠類,?負責?炒菜?? ???///??? ???public?class?FoodSimpleFactory?? ???{?? ???????public?static?Food?CreateFood(string?type)?? ???????{?? ???????????Food?food?=?null;?? ???????????if?(type.Equals("酸辣土豆絲"))?? ???????????{?? ???????????????food=?new?ChiliSourPotatod();?? ???????????}?? ???????????else?if?(type.Equals("姜汁皮蛋"))?? ???????????{?? ???????????????food=?new?PreservedEggSinGingerSauce();?? ???????????}?? ?? ???????????return?food;?? ???????}?? ???}?? ~~~ 接著我們來介紹一下簡單工廠模式中的UML圖,通過前面我們知道,簡單工廠模式又叫靜態方法模式(因為工廠類都定義了一個靜態方法),由一個工廠類根據傳入的參數決定創建出哪一種產品類的實例(通俗點表達:通過客戶下的訂單來負責燒那種菜)。以上述去餐館吃飯為例,簡單工廠模式的UML圖如下: ? ? ? ? ?![](https://box.kancloud.cn/2015-12-30_5683743246ec9.jpg) 通過楚廣明C#視頻的學習,對c#有了一定的了解,帶著這一點懵懵懂懂的了解,我走進了大鳥和小菜的世界,一個個短小精煉的小故事,一場場面向對象編程思維的舞蹈,成為了《大話設計模式》這本書最溫馨美麗的部分,喜歡那個好學,天真,執著的小菜,崇拜那個善于啟發,經驗老到的大鳥,就這樣,慢慢的靠近.........
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看