Python設(shè)計(jì)模式實(shí)戰(zhàn)(英文版)
定 價(jià):139 元
叢書名:程序員書庫
- 作者:[美]詹姆斯·W.庫珀
- 出版時(shí)間:2023/11/1
- ISBN:9787111737674
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP311.561
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書提供了23種經(jīng)過驗(yàn)證的的、可視化、示例驅(qū)動(dòng)的模式,涉及抽象類、多重繼承、GUI編程和小部件、圖形類、繪圖和繪圖、數(shù)學(xué)、數(shù)據(jù)庫、Python裝飾器、圖像、線程、迭代器、創(chuàng)建可執(zhí)行代碼等,從而編寫更加健壯、高效、可維護(hù)和優(yōu)雅的Python代碼,生成功能強(qiáng)大、靈活的程序。
本書的可視化演示使模式更易于使用,同時(shí)使讀者可以利用Python豐富的函數(shù)構(gòu)建復(fù)雜程序。
前 言
在我剛開始學(xué)習(xí)Python時(shí),Python超級簡單的編程代碼和簡單易學(xué)的基本程序給我留下了深刻的印象。Python的語法非常簡單,不需要記憶括號或分號。不同于那些需要使用Tab鍵來創(chuàng)建4個(gè)首行縮進(jìn)的空格的編程語言,Python語言編程簡單易學(xué)。
使用Python幾周后,我認(rèn)識到Python是如此令人難以置信,它可實(shí)現(xiàn)非常強(qiáng)大的功能。Python是一門完全面向?qū)ο蟮恼Z言,用戶可利用它輕松創(chuàng)建類并設(shè)定數(shù)據(jù)的使用范圍,不必為復(fù)雜的語法而煩惱。
事實(shí)上,當(dāng)我用Python重新編寫幾年前用Java編寫的程序時(shí),我為Python的簡單易用感到驚嘆。同時(shí),Python強(qiáng)大的集成開發(fā)環(huán)境(IDE),大大減少了程序編寫的錯(cuò)誤。
當(dāng)我用Python很快就能完成任務(wù)時(shí),我意識到是時(shí)候?qū)懸槐娟P(guān)于Python的書了。我用Python重新編寫了全新、干凈、可讀的23個(gè)經(jīng)典設(shè)計(jì)模式。
由此就誕生了本書。它展示了面向?qū)ο缶幊痰幕A(chǔ)知識、可視化編程,以及如何使用經(jīng)典設(shè)計(jì)模式。讀者可以在https://github.com/jwcnmr/jameswcooper/tree/main/Pythonpatterns上找到相關(guān)程序的代碼。
本書旨在幫助Python程序愛好者拓寬面向?qū)ο缶幊蹋∣OP)和設(shè)計(jì)模式的相關(guān)知識。
如果讀者是一位Python編程的新手,可以直接學(xué)習(xí)第31章至第35章的Python基礎(chǔ)知識,再返回從第1章開始學(xué)習(xí)。
如果讀者是一位有經(jīng)驗(yàn)的Python編程人員,可以從第1章開始學(xué)習(xí)面向?qū)ο缶幊毯驮O(shè)計(jì)模式的相關(guān)知識,按個(gè)人喜好,也可以跳過第2章和第3章,直接學(xué)習(xí)后面的內(nèi)容。
Python是所有編程語言中容易學(xué)習(xí)的一門語言,通過設(shè)計(jì)模式的運(yùn)用,創(chuàng)建各種對象也十分容易。隨后,讀者將了解到對象可以做什么以及在工作中如何使用對象。
在任何情況下,面向?qū)ο缶幊痰姆椒ǘ加兄谧x者編寫更好的、更容易被重復(fù)利用的程序代碼。
本書結(jié)構(gòu)
本書由以下五個(gè)部分構(gòu)成。
第一部分?設(shè)計(jì)模式基礎(chǔ)
實(shí)質(zhì)上,設(shè)計(jì)模式描述的是對象間的有效互動(dòng)。本書第1章介紹對象的相關(guān)內(nèi)容,并提供圖形化實(shí)例來演示模式是如何工作的。
第2章和第3章介紹Python可視化編程工具——tkinter庫,以創(chuàng)建窗口、按鈕、列表、表格等對象。
第4章介紹設(shè)計(jì)模式的定義及其相關(guān)內(nèi)容。
第二部分?創(chuàng)建型模式
第5章介紹基本的工廠模式,它是第6章的基礎(chǔ)。
第6章介紹工廠方法模式。在此模式中,父類將創(chuàng)建實(shí)例對象的決定交給每個(gè)子類。
第7章介紹抽象工廠模式。抽象工廠模式是一個(gè)工廠對象,它返回幾個(gè)組類之一。
第8章介紹單例模式,它描述一個(gè)類中不能有多個(gè)實(shí)例。單例模式提供了實(shí)例的單個(gè)全局訪問點(diǎn)。該模式并不常用,但了解該模式的使用非常有幫助。
第9章介紹生成器模式,該模式將復(fù)雜對象的構(gòu)造與其可視化表示分開,以便根據(jù)程序的需要?jiǎng)?chuàng)建幾種不同的表示形式。
第10章介紹原型模式,展示通過原型模式創(chuàng)建一個(gè)類實(shí)例是多么耗時(shí)且復(fù)雜。對于復(fù)雜對象,通常需要復(fù)制原始實(shí)例對象并酌情做出修改,而不是創(chuàng)建多個(gè)實(shí)例。
第11章總結(jié)第二部分的模式。
第三部分?結(jié)構(gòu)型模式
第12章介紹適配器模式,該模式用于將一個(gè)類的編程接口轉(zhuǎn)換到另一個(gè)類的編程接口。適配器在不相關(guān)的多個(gè)類在同一個(gè)程序中協(xié)同工作時(shí)非常有用。
第13章介紹橋接模式,該模式能夠在不更改客戶端代碼的情況下改變或更換類的實(shí)現(xiàn)代碼。
第14章介紹組合模式,該模式適應(yīng)組件是單個(gè)對象或代表對象的集合。這兩種情況通常采用樹狀結(jié)構(gòu)。
第15章介紹裝飾器模式,該模式提供了一種用戶可修改單個(gè)對象的行為而不必創(chuàng)建新的派生類的方法。該模式雖然可以應(yīng)用于按鈕等可視化對象,但在Python中常見的用途是創(chuàng)建一種修改單個(gè)類實(shí)例行為的宏。
第16章介紹外觀模式,我們學(xué)習(xí)使用外觀模式來編寫一個(gè)簡化的代碼接口。
第17章介紹享元模式,該模式用于同一個(gè)類有多個(gè)實(shí)例的情況,通過將一些數(shù)據(jù)移到類外,可減少對象的數(shù)量。
第18章介紹代理模式,該模式可用更簡單的對象來表示復(fù)雜對象或用于創(chuàng)建耗時(shí)的對象。如果創(chuàng)建一個(gè)對象需要花費(fèi)大量時(shí)間或占用大量計(jì)算機(jī)資源,那么可以通過代理在需要實(shí)際對象時(shí)再創(chuàng)建。
第19章總結(jié)第三部分的模式。
第四部分?行為型模式
第20章介紹責(zé)任鏈模式,該模式展示請求如何從鏈中的一個(gè)對象傳遞到下一個(gè)對象,直到請求被識別,實(shí)現(xiàn)對象之間的解耦。
第21章介紹命令模式,該模式展示命令模式如何使用簡單的對象執(zhí)行軟件命令。此外,該模式支持日志的記錄和可撤銷操作。
第22章介紹解釋器模式,該模式展示如何創(chuàng)建一種小的執(zhí)行語言,并將其包含在應(yīng)用程序中的定義。
第23章介紹迭代器模式,該模式描述遍歷對象集合中的元素的方法。
第24章介紹中介者模式,該模式通過使用獨(dú)立的對象來簡化對象之間的通信,使所有對象之間不必相互了解。
第25章介紹備忘錄模式,該模式保存對象的內(nèi)部狀態(tài),以便用戶以后可以恢復(fù)對象信息。
第26章介紹觀察者模式,該模式允許用戶在程序狀態(tài)發(fā)生變化時(shí),將更改通知給多個(gè)對象。
第27章介紹狀態(tài)模式,該模式允許對象在內(nèi)部狀態(tài)發(fā)生變化時(shí)修改其行為。
第28章介紹策略模式,該模式與狀態(tài)模式類似,不需要任何整體的條件語句即可在算法之間輕松切換。策略模式與狀態(tài)模式之間的區(qū)別在于,在策略模式下,用戶通常從幾種策略中選擇應(yīng)用哪一種。
第29章介紹模板方法模式。該模式在類中形式化定義算法的構(gòu)思,并在子類中實(shí)現(xiàn)具體的細(xì)節(jié)。
第30章介紹訪問者模式。該模式反轉(zhuǎn)了面向?qū)ο蟮哪P停?chuàng)建一個(gè)外部類用于與其他類中的數(shù)據(jù)進(jìn)行交互。
第五部分?Python基礎(chǔ)知識
第31章回顧基本的Python變量和語法。
第32章以實(shí)例的方式展示應(yīng)用程序如何做決策。
第33章簡要總結(jié)幾種常見的Python開發(fā)環(huán)境。
第34章討論集合和文件。
第35章討論如何在Python中使用函數(shù)。
目 錄
第一部分設(shè)計(jì)模式基礎(chǔ)1
tkinter庫2
GitHub2
第1章?對象簡介5
類__init__方法6
類內(nèi)部的變量6
類的集合7
繼承8
用修正方法創(chuàng)建繼承類8
多重繼承8
繪制矩形和正方形10
變量的可見性12
屬性13
局部變量13
Python中的變量類型13
總結(jié)14
GitHub中的程序15
第2章?Python可視化編程17
導(dǎo)入少量名字19
面向?qū)ο蟮某绦?9
使用消息框21
使用文件對話框22
理解pack布局管理器選項(xiàng)23
使用ttk庫24
響應(yīng)用戶輸入25
兩個(gè)數(shù)字相加26
捕獲錯(cuò)誤26
運(yùn)用tkinter中的顏色27
創(chuàng)建單選按鈕27
使用類級別的變量30
類之間的通信30
使用Grid布局30
創(chuàng)建復(fù)選按鈕32
禁用Check框34
在窗口中添加菜單項(xiàng)35
使用Label Frame控件39
繼續(xù)移動(dòng)40
GitHub中的程序40
第3章?數(shù)據(jù)表格的可視化編程41
創(chuàng)建列表框42
顯示狀態(tài)數(shù)據(jù)44
使用組合框46
樹視圖組件47
插入樹節(jié)點(diǎn)50
繼續(xù)移動(dòng)51
GitHub中的程序51
第4章?設(shè)計(jì)模式53
定義設(shè)計(jì)模式54
學(xué)習(xí)步驟55
面向?qū)ο蠓椒ǖ恼f明56
Python設(shè)計(jì)模式57
參考資料57
第二部分?創(chuàng)建型模式59
第5章?工廠模式61
工廠模式簡介61
案例代碼62
兩個(gè)子類62
創(chuàng)建簡單的工廠模式63
使用工廠63
一個(gè)簡單的圖形用戶界面64
數(shù)學(xué)運(yùn)算中的工廠模式65
GitHub中的程序65
問題思考66
第6章?工廠方法模式67
Swimmer類68
Event類69
StraightSeeding類70
CircleSeeding類71
創(chuàng)建Seeding程序72
其他工廠74
使用工廠方法模式的場景74
GitHub中的程序74
第7章?抽象工廠模式75
GardenMaker工廠75
花園規(guī)劃界面77
抽象工廠模式總結(jié)77
問題思考78
GitHub中的程序78
第8章?單例模式79
拋出異常80
創(chuàng)建一個(gè)類示例80
單例模式的靜態(tài)類81
在大型程序中查找單例81
單例模式總結(jié)82
GitHub中的程序82
第9章?生成器模式83
投資跟蹤器84
調(diào)用生成器86
列表框生成器87
復(fù)選框生成器88
顯示選定證劵89
生成器模式總結(jié)89
問題思考89
GitHub中的程序89
第10章?原型模式91
Python中的克隆91
使用原型92
原型模式總結(jié)94
GitHub中的程序94
第11章?創(chuàng)建型模式總結(jié)95
第三部分?結(jié)構(gòu)型模式97
第12章?適配器模式99
列表之間的數(shù)據(jù)移動(dòng)99
創(chuàng)建一個(gè)適配器101
類適配器103
雙向適配器103
可插式適配器103
GitHub中的程序103
第13章?橋接模式105
創(chuàng)建用戶界面107
擴(kuò)展橋107
橋接模式總結(jié)109
GitHub中的程序110
第14章?組合模式111
組合結(jié)構(gòu)的實(shí)現(xiàn)112
工資的計(jì)算112
Employee類112
Boss類113
創(chuàng)建員工樹114
打印員工樹114
創(chuàng)建樹視圖116
使用雙向鏈表117
組合模式總結(jié)118
一個(gè)簡單的組合119
組合模式的實(shí)現(xiàn)119
處理遞歸調(diào)用119
排序組件120
緩存結(jié)果120
GitHub中的程序120
第15章?裝飾器模式121
裝飾按鈕121
使用裝飾器122
使用非可視化裝飾器123
裝飾代碼124
數(shù)據(jù)類裝飾器125
數(shù)據(jù)類處理默認(rèn)值126
裝飾器、適配器和組合實(shí)體126
裝飾器模式總結(jié)126
GitHub中的程序127
第16章?外觀模式129
創(chuàng)建外觀類131
創(chuàng)建數(shù)據(jù)庫和表格135
使用SQLite136
外觀模式總結(jié)137
GitHub中的程序137
關(guān)于MySQL的注釋137
使用SQLite138
參考資料138
第17章?享元模式139
享元139
程序示例140
選擇文件夾142
寫入時(shí)復(fù)制對象143
GitHub中的程序143
第18章?代理模式145
使用Python圖像庫(PIL)145
使用PIL顯示圖像146
使用多線程加載圖像146
多線程日志149
寫入時(shí)復(fù)制149
對比相關(guān)模式149
GitHub中的程序150
第19章?結(jié)構(gòu)型模式總結(jié)151
第四部分?行為型模式153
第20章?責(zé)任鏈模式155
責(zé)任鏈模式的使用場景156
程序示例156
列表框159
編寫幫助系統(tǒng)160
接收幫助命令161
第一個(gè)案例162
鏈或樹163
請求的種類164
責(zé)任鏈模式總結(jié)164
GitHub中的程序165
第21章?命令模式167
命令模式的使用場景167
命令對象168
鍵盤示例168
調(diào)用命令對象170
創(chuàng)建命令對象171
命令模式介紹172
命令模式總結(jié)172
撤銷操