91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-10-15 09:14:34 來源:腳本之家 閱讀:131 作者:lqh 欄目:編程語言

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函數了。

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");   
} 

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

揭东县| 深州市| 大城县| 银川市| 镇安县| 泸定县| 梨树县| 福鼎市| 织金县| 谢通门县| 灯塔市| 宜君县| 武宁县| 沅陵县| 应用必备| 页游| 安平县| 华亭县| 安宁市| 元阳县| 贵阳市| 达孜县| 松溪县| 兴和县| 陕西省| 额济纳旗| 察雅县| 射阳县| 册亨县| 金湖县| 平昌县| 宁安市| 石棉县| 齐齐哈尔市| 临夏市| 北宁市| 庆安县| 金门县| 吉安县| 香格里拉县| 杂多县|