前 言Preface
在我剛開始學習Python時,Python超級簡單的編程方式和簡單易學的基本程序給我留下了深刻的印象。Python語言的語法非常簡單,不需要記憶括號或分號。不同于那些需要使用鍵創(chuàng)建4個首行縮進的空格的編程語言,Python編程簡單易學。
使用Python幾周后,我認識到Python語言是如此令人難以置信,它可以實現非常強大的功能。Python是一門完全面向對象的語言,用戶可利用它輕松創(chuàng)建類并設定數據的使用范圍,不必為復雜的語法而煩惱。
事實上,當我用Python重新編寫幾年前曾用Java編寫的程序時,我為Python的簡單易用感到驚訝。同時,Python強大的集成開發(fā)環(huán)境(IDE),大大減少了程序編寫中的錯誤數量。
當我用Python很快完成許多任務時,我意識到是時候寫一本關于Python的書了。我用Python語言重新編寫了全新、干凈、可讀的23個經典設計模式,由此誕生了本書。本書展示了面向對象的基礎知識、可視化編程,以及如何使用經典設計模式。學習者可以在GitHub上找到相關程序的全部開源代碼,GitHub代碼庫鏈接如下:https://github.com/jwcnmr/jameswcooper/
tree/main/Pythonpatterns。
本書旨在幫助Python程序愛好者拓寬面向對象編程(OOP) 和設計模式的相關知識。
如果讀者是一位Python編程的新手,可以直接學習第31章~第35章的Python基礎知識,然后返回第1章學習。
如果讀者是一位有經驗的Python編程人員,可以從第1章開始學習面向對象編程和設計模式的相關知識,按個人喜好,也可以跳過第2章和第3章,直接學習后面的內容。
Python是所有編程語言中最容易學習的一門語言,通過運用設計模式,實現各種對象十分容易。隨后,讀者將了解到對象可以做什么以及在工作中如何使用對象。
在任何情況下,面向對象編程的方法都有助于讀者編寫更好的、更容易被重復利用的程序代碼。
本書結構
本書由以下五個部分構成。
第一部分 設計模式基礎
從本質上說,設計模式描述的是對象間的有效互動。本書第1章介紹對象的相關內容,并提供圖形化實例來演示模式是如何工作的。
第2章和第3章介紹Python可視化編程工具—tkinter庫,用于創(chuàng)建窗口、按鈕、列表、表格等對象。
第4章介紹設計模式的定義及其相關內容。
第二部分 創(chuàng)建型模式
第5章介紹基本的工廠模式,它是第6章的基礎。
第6章介紹工廠方法模式。在此模式中,父類將創(chuàng)建實例對象的決定交給每個子類。
第7章討論抽象工廠模式。抽象工廠模式是一個工廠對象,它返回幾組類之一。
第8章介紹單例模式,它所描述的類中不能有多個實例。單例模式提供了對此實例的單個全局訪問點。該模式并不常用,但了解該模式非常有幫助。
第9章介紹生成器模式,該模式將復雜對象的構造與其可視化表示分開,以便可以根據程序的需要創(chuàng)建不同的表示形式。
第10章展示通過原型模式創(chuàng)建一個類實例是多么耗時且復雜。對于復雜對象,通常需要復制原始實例對象并酌情做出修改,而不是創(chuàng)建多個實例。
第11章總結第二部分的模式。
第三部分 結構型模式
第12章介紹適配器模式,該模式用于將一個類的編程接口轉換為另一個類的編程接口。適配器在不相關的多個類在同一個程序中協(xié)同工作時非常有用。
第13章介紹橋接模式,該模式旨在將類的接口與其實現代碼分開。這使用戶能夠在不更改客戶端代碼的情況下改變或更換類的實現代碼。
第14章介紹組合模式,該模式適用于組件是單個對象或對象的集合的情況,通常采用樹狀結構。
第15章介紹裝飾器模式,該模式提供了一種用戶可修改單個對象的行為而不必創(chuàng)建新的派生類的方法。該模式雖然可以應用于按鈕等可視化對象,但在 Python 中最常見的用途是創(chuàng)建一種修改單個類實例行為的宏。
第16章介紹外觀模式,闡述如何使用外觀模式編寫一個簡化的代碼接口。
第17章介紹享元模式,該模式用于將一些數據移到類外,以減少對象的數量。
第18章介紹代理模式,該模式適用于以簡單的對象表示復雜的對象,或創(chuàng)建耗時的對象的情況。如果創(chuàng)建一個對象需要花費大量時間或占用大量計算機資源,那么可以使用代理模式,代理模式可以實現延遲創(chuàng)建,直到真正需要該對象為止。
第19章總結了第三部分的模式。
第四部分 行為型模式
第20章介紹責任鏈模式,該模式展示請求如何從鏈中的一個對象傳遞到下一個對象,直到請求被識別,實現對象之間的解耦。
第21章介紹命令模式,展示了命令模式如何使用簡單的對象執(zhí)行軟件命令。 此外,該模式支持日志記錄和可撤銷的操作。
第22章介紹解釋器模式,該模式展示了如何創(chuàng)建一個小型執(zhí)行語言,并將其包含在應用程序中。
第23章介紹迭代器模式,該模式描述了遍歷對象集合中的元素的方法。
第24章介紹中介者模式,該模式通過使用獨立的對象來簡化對象之間的通信,所有對象之間不必相互了解。
第25章介紹備忘錄模式,該模式能保存對象的內部狀態(tài),以便用戶以后可以恢復對象信息。
第26章介紹觀察者模式,該模式允許用戶在程序狀態(tài)發(fā)生變化時將更改通知給多個對象。
第27章介紹狀態(tài)模式,該模式允許對象在內部狀態(tài)發(fā)生變化時修改自身的行為。
第28章介紹策略模式,該模式與狀態(tài)模式類