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

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

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

      兩種語言實現設計模式(C++和Java)(二十:模板模式)

      很久之前的設計模式系列漏掉了模板模式,現補上

      概述

      模板模式是一種行為型設計模式,它定義一個算法的骨架,并允許子類在不改變算法結構的情況下重新定義算法的某些步驟。模板模式的主要目的是通過把不變的行為搬移到超類,去除子類中的重復代碼來體現它的優勢。

      模板模式的主要結構包括:

      1. 抽象類(Abstract Class):定義了一個算法的骨架,它的模板方法定義了算法的基本步驟,可以包含一個或多個抽象操作,子類通過實現這些抽象操作來完成具體的子步驟。

      2. 具體類(Concrete Class):實現抽象類中的抽象操作,以完成算法中與特定子類相關的步驟。

      模板模式的優點:

      1. 提高代碼復用性:將相同部分的代碼放在抽象的父類中,而將不同的代碼放入不同的子類中。

      2. 實現了反向控制:通過一個父類調用其子類的操作,通過對子類的擴展增加新的行為,符合"開閉原則"。

      3. 提高了代碼的可讀性:將公共部分的代碼抽取出來,更容易理解。

      模板模式的應用場景:

      1. 一次性實現一個算法的不變的部分,并將可變的行為留給子類來實現。

      2. 各子類中公共的行為應被提取出來并集中到一個公共父類中以避免代碼重復。

      3. 控制子類擴展,模板方法只在特定點調用"hook"操作,這樣就只允許在這些點進行擴展。

      總之,模板模式通過把不變的行為搬移到超類,去除子類中的重復代碼來體現它的優勢。它提供了一個很好的代碼復用平臺,在類庫設計中尤為重要,可以提高代碼的復用性和可維護性。

      UML

      image

      C++ 實現

      #include <iostream>
      
      // 抽象類:手機
      class Phone {
      public:
          virtual ~Phone()
      
          // 模板方法:定義手機的基本功能步驟
          void usePhone() {
              powerOn();
              unlockScreen();
              performSpecialFunction();
              lockScreen();
              powerOff();
          }
      
      protected:
          // 抽象方法:開機
          virtual void powerOn() = 0;
          // 抽象方法:解鎖屏幕
          virtual void unlockScreen() = 0;
          // 抽象方法:執行特殊功能
          virtual void performSpecialFunction() = 0;
          // 抽象方法:鎖定屏幕
          virtual void lockScreen() = 0;
          // 抽象方法:關機
          virtual void powerOff() = 0;
      };
      
      // 具體類:智能手機
      class SmartPhone : public Phone {
      protected:
          void powerOn() override {
              std::cout << "智能手機開機" << std::endl;
          }
      
          void unlockScreen() override {
              std::cout << "智能手機解鎖屏幕" << std::endl;
          }
      
          void performSpecialFunction() override {
              std::cout << "智能手機執行特殊功能:瀏覽網頁" << std::endl;
          }
      
          void lockScreen() override {
              std::cout << "智能手機鎖定屏幕" << std::endl;
          }
      
          void powerOff() override {
              std::cout << "智能手機關機" << std::endl;
          }
      };
      
      // 具體類:老年機
      class ElderlyPhone : public Phone {
      protected:
          void powerOn() override {
              std::cout << "老年機開機" << std::endl;
          }
      
          void unlockScreen() override {
              std::cout << "老年機解鎖屏幕" << std::endl;
          }
      
          void performSpecialFunction() override {
              std::cout << "老年機執行特殊功能:大字體顯示" << std::endl;
          }
      
          void lockScreen() override {
              std::cout << "老年機鎖定屏幕" << std::endl;
          }
      
          void powerOff() override {
              std::cout << "老年機關機" << std::endl;
          }
      };
      
      int main() {
          Phone* smartPhone = new SmartPhone();
          smartPhone->usePhone();
      
          std::cout << std::endl;
      
          Phone* elderlyPhone = new ElderlyPhone();
          elderlyPhone->usePhone();
      
          delete smartPhone;
          delete elderlyPhone;
      
          return 0;
      }
      
      

      Java 實現

      // 抽象類:手機
      abstract class Phone {
          // 模板方法:定義手機的基本功能步驟
          public final void usePhone() {
              powerOn();
              unlockScreen();
              performSpecialFunction();
              lockScreen();
              powerOff();
          }
      
          // 抽象方法:開機
          protected abstract void powerOn();
          // 抽象方法:解鎖屏幕
          protected abstract void unlockScreen();
          // 抽象方法:執行特殊功能
          protected abstract void performSpecialFunction();
          // 抽象方法:鎖定屏幕
          protected abstract void lockScreen();
          // 抽象方法:關機
          protected abstract void powerOff();
      }
      
      // 具體類:智能手機
      class SmartPhone extends Phone {
          @Override
          protected void powerOn() {
              System.out.println("智能手機開機");
          }
      
          @Override
          protected void unlockScreen() {
              System.out.println("智能手機解鎖屏幕");
          }
      
          @Override
          protected void performSpecialFunction() {
              System.out.println("智能手機執行特殊功能:瀏覽網頁");
          }
      
          @Override
          protected void lockScreen() {
              System.out.println("智能手機鎖定屏幕");
          }
      
          @Override
          protected void powerOff() {
              System.out.println("智能手機關機");
          }
      }
      
      // 具體類:老年機
      class ElderlyPhone extends Phone {
          @Override
          protected void powerOn() {
              System.out.println("老年機開機");
          }
      
          @Override
          protected void unlockScreen() {
              System.out.println("老年機解鎖屏幕");
          }
      
          @Override
          protected void performSpecialFunction() {
              System.out.println("老年機執行特殊功能:大字體顯示");
          }
      
          @Override
          protected void lockScreen() {
              System.out.println("老年機鎖定屏幕");
          }
      
          @Override
          protected void powerOff() {
              System.out.println("老年機關機");
          }
      }
      
      public class Main {
          public static void main(String[] args) {
              Phone smartPhone = new SmartPhone();
              smartPhone.usePhone();
      
              System.out.println();
      
              Phone elderlyPhone = new ElderlyPhone();
              elderlyPhone.usePhone();
          }
      }
      
      posted @ 2024-03-12 17:12  Asp1rant  閱讀(39)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产在线精品中文字幕| 中文字幕结果国产精品| 亚洲国产欧美在线看片一国产| 亚洲中文字幕在线观看| 亚洲一区二区三区自拍天堂| 国产亚洲精品超碰| 玩弄丰满少妇人妻视频| 国产乱色国产精品免费视频| 亚洲欧美综合中文| 新版天堂资源中文8在线| 色综合色狠狠天天综合网| 日本东京热不卡一区二区| 欧美日韩一区二区三区视频播放| 亚洲乱熟女一区二区三区| 亚洲色大成网站WWW尤物| 福州市| 亚洲这里只有久热精品伊人| 在国产线视频A在线视频| 国产欧美一区二区三区免费视频| 亚洲精品一区二区三区色| 亚洲高潮喷水无码AV电影| 色国产视频| 久久天天躁狠狠躁夜夜躁| 国产成人高清亚洲一区二区| 成人午夜视频在线| 午夜福利影院不卡影院| 国产精品美女免费无遮挡| 亚洲国产高清第一第二区| 国产成人av电影在线观看第一页| 国产婷婷综合在线视频中文| VA在线看国产免费| 永昌县| 国产一区二区三区乱码在线观看 | 亚洲AV永久中文无码精品综合| 久久97人人超人人超碰超国产| 万宁市| 国产99视频精品免费视频6| 国产一区日韩二区欧美三区| 久久一卡二卡三卡四卡| 亚洲av鲁丝一区二区三区黄| 色一情一乱一伦麻豆|