最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言 設計模式之訪問者模式

 更新時間:2017年01月28日 09:15:26   投稿:lqh  
這篇文章主要介紹了C語言 設計模式之訪問者模式的相關資料,需要的朋友可以參考下

C語言訪問者模式

概要:

訪問者模式,聽上去復雜一些。但是,這種模式用簡單的一句話說,就是不同的人對不同的事物有不同的感覺。比如說吧,豆腐可以做成麻辣豆腐,也可以做成臭豆腐。可是,不同的地方的人未必都喜歡這兩種豆腐。四川的朋友可能更喜歡辣豆腐,江浙的人就可能對臭豆腐更喜歡一些。那么,這種情況應該怎么用設計模式表達呢?

typedef struct _Tofu 
{ 
  int type; 
  void (*eat) (struct _Visitor* pVisitor, struct _Tofu* pTofu); 
}Tofu; 
 
typedef struct _Visitor 
{ 
  int region; 
  void (*process)(struct _Tofu* pTofu, struct _Visitor* pVisitor); 
}Visitor; 

    就是這樣一個豆腐,eat的時候就要做不同的判斷了。

void eat(struct _Visitor* pVisitor, struct _Tofu* pTofu) 
{ 
  assert(NULL != pVisitor && NULL != pTofu); 
 
  pVisitor->process(pTofu, pVisitor); 
} 

    既然eat的操作最后還是靠不同的visitor來處理了,那么下面就該定義process函數(shù)了。

void process(struct _Tofu* pTofu, struct _Visitor* pVisitor) 
{ 
  assert(NULL != pTofu && NULL != pVisitor); 
 
  if(pTofu->type == SPICY_FOOD && pVisitor->region == WEST || 
    pTofu->type == STRONG_SMELL_FOOD && pVisitor->region == EAST) 
  { 
    printf("I like this food!\n"); 
    return; 
  } 
 
  printf("I hate this food!\n");   
} 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

您可能感興趣的文章:

相關文章

  • C C++ 題解LeetCode2360圖中的最長環(huán)示例

    C C++ 題解LeetCode2360圖中的最長環(huán)示例

    這篇文章主要為大家介紹了C C++ 題解LeetCode2360圖中的最長環(huán)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • C++哈希表之閉散列方法的模擬實現(xiàn)詳解

    C++哈希表之閉散列方法的模擬實現(xiàn)詳解

    閉散列指(開放定址法)發(fā)生沖突時,如果哈希表沒有被填滿,則表內(nèi)一定還有其他空閑位置,可以把沖突值放到下一個沒有被占用的空余位置上。本文將模擬實現(xiàn)閉散列方法,需要的可以參考一下
    2022-11-11
  • C++ 中使用不同平臺的時間函數(shù)及對比分析

    C++ 中使用不同平臺的時間函數(shù)及對比分析

    在C++ 編程中,時間函數(shù)的選擇對于性能測量、任務調(diào)度和時間戳記錄至關重要,本文將介紹在 C++ 中常用的時間函數(shù),并比較它們在不同平臺上的應用和效果,感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • VC實現(xiàn)A進程窗口嵌入到B進程窗口中顯示的方法

    VC實現(xiàn)A進程窗口嵌入到B進程窗口中顯示的方法

    這篇文章主要介紹了VC實現(xiàn)A進程窗口嵌入到B進程窗口中顯示的方法,對于理解windows程序運行原理的進程問題有一定的幫助,需要的朋友可以參考下
    2014-07-07
  • C語言實現(xiàn)簡單的貪吃蛇小游戲

    C語言實現(xiàn)簡單的貪吃蛇小游戲

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡單的貪吃蛇小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • 詳解C++17中nodiscard標記符的使用

    詳解C++17中nodiscard標記符的使用

    在C++?17中引入了一個標記符nodiscard,用于聲明一個?“非棄值(no-discard)表達式”。這篇文章就來和大家來聊一聊nodiscard標記符的使用吧
    2023-02-02
  • C++淺析類與對象的基礎

    C++淺析類與對象的基礎

    類和對象是兩種以計算機為載體的計算機語言的合稱。對象是對客觀事物的抽象,類是對對象的抽象。類是一種抽象的數(shù)據(jù)類型;變量就是可以變化的量,存儲在內(nèi)存中—個可以擁有在某個范圍內(nèi)的可變存儲區(qū)域
    2022-05-05
  • C語言多文件編程問題解析

    C語言多文件編程問題解析

    在某些場景中,考慮到編譯效率和可移植性,#pragma once 和 #ifndef 經(jīng)常被結合使用來避免頭文件被 重復引入,這里介紹用 _Pragma 操作符避免頭文件重復引入的問題,感興趣的朋友跟隨小編一起看看吧
    2022-12-12
  • 深入理解數(shù)組指針與指針數(shù)組的區(qū)別

    深入理解數(shù)組指針與指針數(shù)組的區(qū)別

    本篇文章是對數(shù)組指針與指針數(shù)組的區(qū)別進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C++11新特性中auto 和 decltype 區(qū)別和聯(lián)系

    C++11新特性中auto 和 decltype 區(qū)別和聯(lián)系

    這篇文章主要介紹了C++11新特性中auto 和 decltype 區(qū)別和聯(lián)系的相關資料,需要的朋友可以參考下
    2017-01-01

最新評論

鹰潭市| 兰州市| 东兴市| 全州县| 平远县| 隆子县| 阳泉市| 新沂市| 衡东县| 宜兴市| 玉门市| 阜康市| 新晃| 定南县| 万州区| 上饶县| 广水市| 永修县| 巴东县| 东丽区| 正阳县| 莱州市| 旌德县| 泗洪县| 独山县| 兰溪市| 修文县| 乌兰察布市| 抚远县| 大兴区| 神木县| 大城县| 木里| 洪泽县| 浦北县| 曲松县| 汉源县| 七台河市| 邻水| 天津市| 顺平县|