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