商品簡介
作為可複用面向對象軟件開發的基礎,設計模式集合了很多軟件開發領域專家的寶貴經驗和良好實踐,其重要性不言而喻。但是,學習設計模式的過程並不是一帆風順的,對於缺乏面向對象開發經驗的設計者尤其如此。就像在游泳池中不能學會海戰一樣,我們不應該指望理解幾個似是而非的例子就可以在實際開發中靈活運用設計模式。學習設計模式最好的方式就是在實際的開發中邊學邊練邊體會。本書利用Python 的標準GUI 工具包tkinter,通過可執行的示例對23 個設計模式逐個進行說明。這樣一方面可以使讀者瞭解真實的軟件開發工作中每個設計模式的運用場景和想要解決的問題;另一方面通過對這些問題的解決過程進行說明,讓讀者明白在編寫代碼時如何判斷使用設計模式的利弊,並合理運用設計模式。對設計模式感興趣而且希望隨學隨用的讀者通過本書可以快速跨越從理解到運用的門檻;希望學習Python GUI 編程的讀者可以將本書中的示例作為設計和開發的參考;使用Python 語言進行圖像分析、數據處理工作的讀者可以直接以本書中的示例為基礎,迅速構建自己的系統架構。
作者簡介
薛衛國,大連某日資嵌入式軟件開發公司架構組負責人、CSDN博客專家,埋頭于C++開發第一線二十餘年,擅長面向對象設計、編程,熟練掌握UML、安卓應用、微信小程序開發,精通Python、Java語言並長期研究各種編程語言的設計模式。公眾號“面向對象思考”。
薛衛民,1999年畢業于東北大學,2003年赴日本從事軟件開發工作至今,現為日本某知名電子醫療設備製造公司框架設計開發團隊的主要成員,負責醫療設備軟件的框架設計和開發工作。擁有13年面向對象設計開發經驗·,熟練掌握統一建模語言(UML),精通C++、Python、C#等編程語言。
名人推薦
掌握設計模式,攀登編程巔峰。Python高階學習,就從Python設計模式開始。
掌握設計模式,攀登編程巔峰。Python高階學習,就從Python設計模式開始。
設計模式,是高階編程的重要內容。對於一般的Python初學者來說,Python設計模式的實踐可能顯得難以觸及,但對於有更高追求的Python使用者來說,Python設計模式是非常值得學習的知識。本書是少見的關於Python設計模式實戰的圖書。
學習設計模式的最大難點在於如何在實際的開發中根據使用場景選擇最適合的模式。為了解決這個問題,本書首先從實際的開發場景入手提出設計模式需要解決的問題,接著通過一些典型的簡單示例說明設計模式的結構和行為,最後結合實際的開發示例,說明設計模式在產品級軟件開發中的運用方法和注意事項。學習本書,可以幫助讀者實現設計模式從入門到精通的跨越。
東北大學軟件學院教授 國務院津貼獲得者 郝培鋒
本書有兩個亮點:第一,其是面向Python語言的,現在學習Python語言的人很多,而關於如何有效設計Python程序的書卻不多;第二,其能夠結合一個完整示例PyExecutor,告訴我們當面對具體的開發需求時如何參考模式進行有效設計。PyExecutor是一個非常有吸引力的示例,支持對功能模塊圖的建模、調試和仿真,因此,本書能幫助眾多開發者提升他們迫切需要的綜合設計能力。期待薛老師的這本書能夠給讀者提供一個關於Python設計模式的全面參考。
火龍果軟件工程創始人 俎濤
目次
目錄
第1 章 示例軟件介紹 ··········································································.1
1.1 準備工作 ···········································································.1
1.1.1 源代碼下載 ································································.1
1.1.2 安裝開發環境 ·····························································.1
1.2 啟動 ·················································································.1
1.3 功能說明 ···········································································.2
1.4 功能概要 ···········································································.3
1.4.1 編輯 ·········································································.3
1.4.2 邏輯調試 ···································································.6
1.4.3 文件管理 ···································································.6
1.4.4 代碼生成 ···································································.6
第2 章 創建型模式 ·············································································.7
2.1 抽象工廠模式 ·····································································.7
2.1.1 問題說明 ···································································.7
2.1.2 模式結構 ···································································.8
2.1.3 示例代碼 ···································································.9
2.1.4 實戰運用 ··································································.12
2.1.5 效果討論 ··································································.19
2.1.6 提示和技巧 ·······························································.19
2.2 工廠方法模式 ····································································.19
2.2.1 問題說明 ··································································.19
2.2.2 模式結構 ··································································.21
2.2.3 示例代碼 ··································································.22
2.2.4 實戰運用 ··································································.24
2.2.5 效果討論 ··································································.26
2.2.6 提示和技巧 ·······························································.26
2.3 原型模式 ··········································································.27
2.3.1 問題說明 ··································································.27
2.3.2 模式結構 ··································································.28
2.3.3 示例代碼 ··································································.29
2.3.4 實戰運用 ··································································.30
2.3.5 效果討論 ··································································.34
2.3.6 提示和技巧 ·······························································.34
2.4 生成器模式 ·······································································.35
2.4.1 問題說明 ··································································.35
2.4.2 模式結構 ··································································.37
2.4.3 示例代碼 ··································································.38
2.4.4 實戰運用 ··································································.42
2.4.5 效果討論 ··································································.43
2.4.6 提示和技巧 ·······························································.44
2.5 單例模式 ··········································································.44
2.5.1 問題說明 ··································································.44
2.5.2 模式結構 ··································································.45
2.5.3 示例代碼 ··································································.46
2.5.4 實戰運用 ··································································.47
2.5.5 效果討論 ··································································.50
2.5.6 提示和技巧 ·······························································.50
2.6 創建型模式小結 ·································································.50
第3 章 結構型模式 ············································································.52
3.1 組合模式 ···················································