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

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

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

      hwaityd的小窩

      Loading...

      在C++中,設計模式是一套被廣泛認可的解決特定編程問題的最佳實踐。這些模式可以幫助開發者構建靈活、可維護和可重用的代碼。以下是一些最常見的設計模式及其在C++中的應用:

      1. 單例模式(Singleton)

      概念:確保一個類只有一個實例,并提供一個全局訪問點。
      原理:使用私有構造函數和靜態實例變量。
      用法:通常用于管理共享資源,如配置信息、線程池等。

      案例代碼

      class Singleton {
      private:
          static Singleton* instance;
          Singleton() {}
      
      public:
          static Singleton* getInstance() {
              if (instance == nullptr) {
                  instance = new Singleton();
              }
              return instance;
          }
      };
      
      Singleton* Singleton::instance = nullptr;
      
      int main() {
          Singleton* s1 = Singleton::getInstance();
          Singleton* s2 = Singleton::getInstance();
          assert(s1 == s2); // 確保是同一個實例
          return 0;
      }
      

      2. 工廠模式(Factory Method)

      概念:定義一個創建對象的接口,但讓子類決定實例化哪個類。
      原理:使用多態來創建對象。
      用法:用于代碼中需要生成一系列相關或依賴對象的場景。

      案例代碼

      class Product {
      public:
          virtual void use() = 0;
      };
      
      class ConcreteProductA : public Product {
      public:
          void use() override {
              cout << "Using A" << endl;
          }
      };
      
      class ConcreteProductB : public Product {
      public:
          void use() override {
              cout << "Using B" << endl;
          }
      };
      
      class Factory {
      public:
          virtual Product* createProduct() = 0;
      };
      
      class ConcreteFactoryA : public Factory {
      public:
          Product* createProduct() override {
              return new ConcreteProductA();
          }
      };
      
      class ConcreteFactoryB : public Factory {
      public:
          Product* createProduct() override {
              return new ConcreteProductB();
          }
      };
      
      int main() {
          Factory* factory = new ConcreteFactoryA();
          Product* product = factory->createProduct();
          product->use(); // 使用A
          delete product;
          delete factory;
          return 0;
      }
      

      3. 觀察者模式(Observer)

      概念:定義對象間的一種一對多的依賴關系,當一個對象改變狀態時,所有依賴于它的對象都得到通知并自動更新。
      原理:使用回調函數或事件。
      用法:用于實現數據和視圖之間的同步,如模型-視圖-控制器(MVC)架構。

      案例代碼

      #include <list>
      #include <algorithm>
      
      class Observer {
      public:
          virtual void update() = 0;
      };
      
      class Subject {
      private:
          std::list<Observer*> observers;
      public:
          void attach(Observer* observer) {
              observers.push_back(observer);
          }
          void detach(Observer* observer) {
              observers.remove(observer);
          }
          void notify() {
              for (auto observer : observers) {
                  observer->update();
              }
          }
      };
      
      class ConcreteObserver : public Observer {
      public:
          void update() override {
              cout << "Observer updated" << endl;
          }
      };
      
      int main() {
          Subject subject;
          ConcreteObserver observer;
          subject.attach(&observer);
          subject.notify(); // 通知所有觀察者
          subject.detach(&observer);
          return 0;
      }
      

      4. 策略模式(Strategy)

      概念:定義一系列算法,將每個算法封裝起來,并使它們可以互換使用。
      原理:使用多態來動態選擇算法。
      用法:用于需要動態改變算法或行為的場景。

      案例代碼

      class Context {
      public:
          virtual void executeStrategy() = 0;
      };
      
      class ConcreteStrategyA : public Context {
      public:
          void executeStrategy() override {
              cout << "Executing Strategy A" << endl;
          }
      };
      
      class ConcreteStrategyB : public Context {
      public:
          void executeStrategy() override {
              cout << "Executing Strategy B" << endl;
          }
      };
      
      class Strategy {
      public:
          virtual void algorithm() = 0;
      };
      
      class ContextClient {
      private:
          Strategy* strategy;
      public:
          void setStrategy(Strategy* strategy) {
              this->strategy = strategy;
          }
          void executeStrategy() {
              strategy->executeStrategy();
          }
      };
      
      int main() {
          ContextClient client;
          client.setStrategy(new ConcreteStrategyA());
          client.executeStrategy(); // 執行策略A
          client.setStrategy(new ConcreteStrategyB());
          client.executeStrategy(); // 執行策略B
          return 0;
      }
      

      這些設計模式提供了一套通用的解決方案,可以幫助開發者解決特定的編程問題,并提高代碼的可維護性和可擴展性。在實際開發中,根據具體需求選擇合適的設計模式是非常重要的。

      posted on 2024-10-20 01:10  hwaityd  閱讀(51)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 亚洲日韩国产精品第一页一区| 欧美一区二区三区欧美日韩亚洲| 国产偷国产偷亚洲高清人| 久久这里有精品国产电影网| 国产成a人亚洲精v品无码性色 | 亚洲av永久无码精品天堂久久| 激情综合网一区二区三区| 日韩免费美熟女中文av| 亚洲日本高清一区二区三区| 人妻夜夜爽天天爽三区丁香花| 开心激情站开心激情网六月婷婷| 一区二区三区四区五区自拍| 91产精品无码无套在线| 少妇被粗大的猛烈xx动态图| 亚洲欧美自偷自拍视频图片| 麻豆国产成人AV在线播放| 99噜噜噜在线播放| 高清无打码一区二区三区| 国产精品视频一区二区不卡| 国产999久久高清免费观看| 文登市| 亚洲色av天天天天天天| 激情视频乱一区二区三区| 吉川爱美一区二区三区视频| 无码国内精品久久人妻蜜桃| 蜜臀午夜一区二区在线播放| 精品中文字幕人妻一二| 又黄又爽又无遮挡免费的网站| 国产精品揄拍一区二区久久| 亚洲色婷婷综合开心网 | 久久综合亚洲色一区二区三区| 国产三级精品三级在线看| 亚洲成人资源在线观看| 欧美成人片一区二区三区| 亚洲最大av一区二区| 国产精品一区高清在线观看| 怡春院久久国语视频免费| 午夜AAAAA级岛国福利在线| 中文字幕亚洲男人的天堂网络| 亚洲V天堂V手机在线| 亚洲国产精品一二三区|