日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

【c++】29.设计模式总结

發布時間:2025/3/21 c/c++ 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【c++】29.设计模式总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

持續更新中…

1.有個通用的使用多態、虛函數 的方法:
  • 1.定義一個容器,其中的元素類型是基類,在容器中存入不同子類類型的指針。
  • 2.不同子類中定義自己的接口虛函數。
  • 3.當遍歷該容器時,會根據該容器中的不同類型自動調用不同子類的接口函數。

2.如果增加一個需求 或者 更改一個需求很頻繁時候

做法是

  • 1.先定義一個基類Base_A,在這個基類定義公共的一個接口虛函數 Func();
  • 2.再定義子類 Derived_B、Derived_C 繼承于這個基類 Base_A,在子類 Derived_B、Derived_C 中去具體實現這個需求的虛函數接口Func()。
  • 3.在另一個類Class_C中定義一個容器(以vector容器為例)std::vector<Base_A*> Vct,通過在容器Vct中 增加或者修改要使用的具體子類類型 Derived_B 或 Derived_C 的對象.
    當遍歷該容器Vct時,會根據該容器中的不同類型自動調用不同子類的接口函數Func()。
3.區分組合和聚合的方法:生命周期是否一致。一致的是組合,不一致的是聚合。

中間的裝飾器是為了提取公共代碼???

4.單一職責原則:一個類只有一個變化的原因。
5.依賴倒置原則:應該依賴抽象,而不應該依賴實現細節。(李老師說了一句,這里的依賴指的是編譯時依賴???)
6.面向接口編程:最簡單的一個表現形式就是,變量要聲明成 抽象基類。

只要是new出來的,都是實現細節,是細節依賴,緊耦合(依賴具體類)。Base *A=new Derived();這種做法違背依賴倒置原則。因為Base *A是抽象基類接口,而new Derived()帶來的是細節依賴,緊耦合(依賴具體類)?!S模式講解

7.虛函數就是延時到運行時!

虛函數就是把函數的調用延時到運行時確定!

8.C++的多態性分為兩種:編譯時的多態、運行時的多態; 使用重載來實現編譯時的多態,使用虛函數來實現運行時的多態。

如果要用多態,就必須使用指針。

9.為什么多態必須使用指針?

答:參考博客 https://www.cnblogs.com/yinheyi/p/10525543.html

10.工廠模式里面講到:設計模式不是把變化消滅掉了,而是把變化限定到了一個局部位置。

工廠模式里面就是,類 MainForm 的整體看上去沒有依賴任何具體類,他里面實用的都是抽象類。 抽象類A* a = 抽象類B對象指針->createA(); 其中 createA() 返回一個 抽象類A 的對象指針。我們通過在MainForm的構造函數(或者它的接口函數)傳入一個B的具體子類指針,然后把該指針賦值給 抽象類B對象指針。這樣這個B的具體子類并不在類 MainForm中定義創造,而是通過參數傳進來,就保證了類MainForm中全部都是抽象的、穩定的。

李老師的代碼為了突出重點,new之后,都沒有規范寫delete,但是我們實際開發一定要記得寫delete。不想寫就使用智能指針shared_ptr聲明類別變量,然后使用make_shared進行初始化。

11.多態只對于虛函數來說。

對于類中的非虛函數,不能通過 把子類對象賦值給基類對象,或者 把子類指針賦值給基類指針的方式,即,假設子類Derived有一個func()普通成員函數,基類Base沒有,不能通過Derived derived; Base base=derived; base.func()或者 Base *base= new Derived();,base->func();的方式來調用到子類的func非虛函數(普通成員函數)。

總結

以上是生活随笔為你收集整理的【c++】29.设计模式总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。