<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      5分鐘學(xué)設(shè)計模式:簡單工廠與美食街的不期而遇

      大家好,我是知微。

      寫代碼好幾年,是不是還糾結(jié)于這些問題:

      • 面對一堆if-else,代碼越寫越長,維護(hù)起來比攀登珠穆朗瑪峰還難
      • 每次只敢小心翼翼改個小功能,生怕程序突然“嘭”一聲,全炸了
      • 想學(xué)習(xí)大佬們的代碼,卻總是看得一頭霧水,不知如何下手。

      別急,優(yōu)秀的代碼設(shè)計往往有秘訣——設(shè)計模式。模仿只是表面,理解背后的設(shè)計哲學(xué)才是關(guān)鍵。

      設(shè)計模式,何方神圣?

      在編程的江湖里,設(shè)計模式就是解決問題的寶典,是前輩們在軟件開發(fā)中留下的寶貴經(jīng)驗,幫我們寫出可復(fù)用、靈活、高效的代碼。

      設(shè)計模式,三分天下

      設(shè)計模式大致分為三類:

      1. 創(chuàng)建型模式:關(guān)注對象的誕生,如何優(yōu)雅地創(chuàng)建和管理對象。
      2. 結(jié)構(gòu)型模式:關(guān)注類和對象的“排列組合”,化簡為繁,構(gòu)建復(fù)雜系統(tǒng)。
      3. 行為型模式:關(guān)注對象之間的“互動”,定義它們?nèi)绾螀f(xié)同工作。

      “唉,又來這些概念,頭都大了!”

      行了行了,不賣關(guān)子了,咱們直接進(jìn)入正題:簡單工廠模式

      第一幕:美食街的邂逅

      晚上11點,你終于結(jié)束了一天的工作,疲憊地走在回家的路上。經(jīng)過一條熱鬧的美食街,空氣中彌漫著各種美食的香味,讓你不由自主地停下了腳步。

      你心想:“萬事皆空,唯美食不可辜負(fù),今天一定要好好犒勞自己!”但打開微信錢包一看,發(fā)現(xiàn)余額只剩下5塊。你嘆了口氣,只能找個小吃攤隨便吃點。

      你走向最近的一個攤位,對老板說:“老板,來份煎餅果子!”

      老板熱情地回應(yīng):“好嘞,加不加雞蛋?”

      你擺了擺手,老板見狀,便開始熟練地制作起來。

      用代碼表示

      class Pancake {
      public:
          void serve() {
              std::cout << "你的煎餅果子好了!" << std::endl;
          }
      };
      
      int main() {
          Pancake p;
          p.serve(); // 顧客:老板,來份煎餅果子!
          return 0;
      }
      

      第二幕:美食街的新品

      幾周后,你再次來到美食街,老板熱情地向你推薦:“我們最近新增了雞蛋灌餅,要不要嘗嘗?”你心想,既然來了,不妨試試新口味。

      你對老板說:“老板,那就來份雞蛋灌餅吧!”

      老板手腳麻利,很快為你準(zhǔn)備好了熱騰騰的雞蛋灌餅。

      用代碼表示

      // ...之前的煎餅果子的代碼
      
      class EggPancake {
      public:
          void serve() {
              std::cout << "熱騰騰的雞蛋灌餅好了!" << std::endl;
          }
      };
      
      int main() {
      	// ...之前的煎餅果子的代碼
          
          EggPancake ep;
          ep.serve(); // 顧客:老板,來份雞蛋灌餅吧!
          return 0;
      }
      

      第三幕:美食街的繁榮

      隨著時間的流逝,美食街越來越繁榮,小吃攤也增加了更多的小吃品種,如手抓餅和肉夾饃。每次光顧,你都能嘗試不同的美食。

      用代碼表示

      // ...之前的煎餅果子和雞蛋灌餅的代碼
      class HandPies {
      public:
          void serve() {
              std::cout << "香脆的手抓餅好了!" << std::endl;
          }
      };
      
      class RouJiaMo {
      public:
          void serve() {
              std::cout << "美味的肉夾饃好了!" << std::endl;
          }
      };
      
      int main() {
          // ...之前的煎餅果子和雞蛋灌餅的代碼
      
          HandPies hp;
          hp.serve(); // 顧客:老板,來份手抓餅!
      
          RouJiaMo rjm;
          rjm.serve(); // 顧客:老板,來個肉夾饃!
          return 0;
      }
      

      第四幕:簡單工廠的引入

      你注意到,隨著小吃種類的增加,老板開始使用一張菜單,上面列出了所有可以提供的小吃。每次你只需要告訴老板你想要什么,老板就會從菜單上找到對應(yīng)的小吃,然后為你準(zhǔn)備。

      你突然靈光一閃,這不正是編程中的簡單工廠模式嗎?通過一個統(tǒng)一的接口來創(chuàng)建不同的對象。

      引入簡單工廠模式

      #include <memory>
      #include <string>
      #include <iostream>
      
      class Snack {
      public:
          virtual void serve() = 0;
          virtual ~Snack() {}
      };
      
      class Pancake : public Snack {
      public:
          void serve() override {
              std::cout << "你的煎餅果子好了!" << std::endl;
          }
      };
      
      class EggPancake : public Snack {
      public:
          void serve() override {
              std::cout << "熱騰騰的雞蛋灌餅好了!" << std::endl;
          }
      };
      
      // ...其他小吃類
      
      class SnackFactory {
      public:
          static std::unique_ptr<Snack> createSnack(const std::string& type) {
              if (type == "PANCAKE") {
                  return std::make_unique<Pancake>();
              }
              // ...根據(jù)類型創(chuàng)建其他小吃
              return nullptr;
          }
      };
      
      int main() {
          auto snack = SnackFactory::createSnack("PANCAKE");
          snack->serve(); // 顧客:老板,來份煎餅果子!
      
          // ...根據(jù)顧客的選擇,創(chuàng)建其他小吃
      
          return 0;
      }
      

      采用簡單工廠模式,美食街的老板就能輕松滿足顧客的各種小吃需求,顧客點餐也變得更快捷。

      這個模式的妙處在于,它把創(chuàng)建小吃對象的過程從原來的地方挪到了一個專門的“工廠”里。一開始,你可能覺得這個改變沒啥大不了的,特別是當(dāng)你的程序還很簡單,只有幾個類的時候。但是,隨著你的程序越來越龐大和復(fù)雜,這個模式的好處就會慢慢顯現(xiàn)出來。

      • 簡化代碼:你不用再代碼的各個角落重復(fù)寫創(chuàng)建對象的代碼了。
      • 易于管理:所有的創(chuàng)建邏輯都集中在工廠類里,改起來簡單多了。
      • 擴展方便:想加個新小吃?在工廠類里添幾行代碼就行,不用滿世界找代碼改。
      • 減少依賴:你的代碼塊之間互相依賴少了,更像是獨立的模塊。

      值得注意的是,盡管簡單工廠模式?jīng)]有被列入GoF的23種經(jīng)典設(shè)計模式,但它在軟件開發(fā)實踐中仍然非常有用,特別是對于新手來說,它是學(xué)習(xí)面向?qū)ο笤O(shè)計原則和設(shè)計模式的一個很好的起點。

      以上就是簡單工廠模式的全部內(nèi)容了,后面我會接著介紹GoF的23種經(jīng)典設(shè)計模式,敬請期待!

      ??你的每一次??點贊 ?收藏 ??評論,都是我更新的動力,如有錯誤請留言指正,非常感謝!

      posted @ 2024-05-13 13:53  知微之見  閱讀(34)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲欧美日韩人成在线播放| 成人免费A级毛片无码网站入口| 亚洲精品理论电影在线观看| 国产精品久久国产精麻豆| 佛冈县| 视频一区视频二区亚洲视频 | 国产成人av一区二区三区不卡| 久久99国产亚洲高清观看首页| 18禁极品一区二区三区| 成人无码午夜在线观看| 国产明星精品无码AV换脸| 久久99精品九九九久久婷婷| 亚洲精品国产摄像头| 蜜臀久久综合一本av| 天天综合天天添夜夜添狠狠添| 国产精品无码无需播放器| 97久久久精品综合88久久| 免费视频成人片在线观看| 亚洲色大成网站WWW久久| 看免费的无码区特aa毛片| 国产精品中文字幕日韩| 亚洲欧洲日韩国内精品| 又大又粗又爽18禁免费看| 欧美人禽zozo动人物杂交| 亚洲永久精品日本久精品| 玖玖在线精品免费视频| 亚洲综合精品香蕉久久网| 丰满人妻熟妇乱又伦精品软件| 国产免费午夜福利片在线| 日本中文字幕亚洲乱码| 亚洲人成网站18禁止无码| 国产成人精品亚洲一区二区| 99国精品午夜福利视频不卡99| 波多野结衣一区二区三区高清av| 日韩成人午夜精品久久高潮| 精品一区二区中文字幕| 久久久亚洲欧洲日产国码二区| 国产午夜福利小视频在线| 国产成人一区二区不卡| 国产乱码精品一区二区三区中文| 蜜臀视频一区二区在线播放|