總金額: 會員:NT$ 0 非會員:NT$ 0 
(此金額尚未加上運費)
電子電信技術 電腦技術 計算技術、計算機技術
 
 
 
 
實戰Python設計模式:可復用面向對像軟件開發實踐(配件另行下載)
 作  者: 薛衛國/薛衛民
 出版單位: 電子工業
 出版日期: 2020.03
 進貨日期: 2020/5/13
 ISBN: 9787121379598
 開  本: 16 開    
 定  價: 443
 售  價: 236
  會 員 價: 236
推到Facebook 推到Plurk 推到Twitter
前往新書區 書籍介紹 購物流程  
 
編輯推薦:

設計模式,是高階編程的重要內容。對於一般的Python初學者來說,Python設計模式的實踐可能顯得難以觸及,但對於有更高追求的Python使用者來說,Python設計模式是非常值得學習的知識。本書是少見的關於Python設計模式實戰的圖書。


內容簡介:

作為可復用面向對象軟件開發的基礎,設計模式集合了很多軟件開發領域專家的寶貴經驗和良好實踐,其重要性不言而喻。但是,學習設計模式的過程並不是一帆風順的,對於缺乏面向對象開發經驗的設計者尤其如此。就像在游泳池中不能學會海戰一樣,我們不應該指望理解幾個似是而非的例子就可以在實際開發中靈活運用設計模式。學習設計模式*好的方式就是在實際的開發中邊學邊練邊體會。本書利用Python 的標準GUI 工具包tkinter,通過可執行的示例對23 個設計模式逐個進行說明。這樣一方面可以使讀者了解真實的軟件開發工作中每個設計模式的運用場景和想要解決的問題;另一方面通過對這些問題的解決過程進行說明,讓讀者明白在編寫代碼時如何判斷使用設計模式的利弊,並合理運用設計模式。對設計模式感興趣而且希望隨學隨用的讀者通過本書可以快速跨越從理解到運用的門檻;希望學習Python GUI 編程的讀者可以將本書中的示例作為設計和開發的參考;使用Python 語言進行圖像分析、數據處理工作的讀者可以直接以本書中的示例為基礎,迅速構建自己的系統架構。


作者簡介:

薛衛國 大連某日資嵌入式軟件開發公司架構組負責人、CSDN博客專家,埋頭於C 開發第一線二十餘年,擅長面向對象設計、編程,熟練掌握UML、安卓應用、微信小程序開發,精通Python、Java語言並長期研究各種編程語言的設計模式。公眾號“面向對象思考”。

薛衛民 1999年畢業於東北大學,2003年赴日本從事軟件開發工作至今,現為日本某知名電子醫療設備製造公司框架設計開發團隊的主要成員,負責醫療設備軟件的框架設計和開發工作。擁有13年面向對象設計開發經驗·,熟練掌握統一建模語言(UML),精通C 、Python、C#等編程語言。


圖書目錄:

第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 組合模式 ··········································································.52
3.1.1 問題說明 ···················3


章節試讀:

前言
寫書不是一件容易的事,因為許多自以為想得很清楚的事情,一旦用文字來表達總感覺有些語焉不詳。同時,將自己寫的代碼公開需要很大的決心,代碼的規範性、正確性等都是需要考慮的問題。幸運的是,各位讀者還是看到了這本書。筆者認為,對於那些剛接觸面向對象開發的人,或者已經具備基本知識卻不知道如何運用的開發者,擁有一本結合開發實踐Python 設計模式的書是很有必要的。筆者結合自己二十多年的開發工作經驗,將關於面向對象和設計模式的知識通過Python 語言展示給各位讀者。面向對象、設計模式的初學者通過本書可以快速入門;已經基本掌握設計模式的開發者通過本書可以理解設計模式在實際開發中的運用,從而能夠合理、有效地選擇設計模式。
關於設計模式
在實際開發中運用設計模式有利於設計出擴展性更好、更規範的軟件架構。在軟件開發過程中,總有部分內容是設計者憑直覺得出的結論,但是憑直覺得出的結論不可避免地會出現不易理解的內容。通過運用設計模式,可以在另一個高度上審視自己的設計。面向對象的開發很多時候是基於規則的,越早使用規則,越能在早期發現問題,越能開發出獨立性強、擴展性好的軟件,而設計模式就是經過實踐證明的諸多規則的最佳實踐。
理解了設計模式相當於掌握了一種更高級的設計語言。在考慮設計方案時,一個設計模式的名稱就可以表達很多信息,這樣可以大大節約設計的時間,提高溝通的效率。
筆者身邊很多程序員的記憶力非常好,很擅長調試程序,但是讓他們描述自己的設計,他們卻會感覺很困難。這時如果使用設計模式語言,就可以大大改善這種狀況。設計模式語言可以讓開發者之間的溝通更順暢,讓設計資料的思路更清晰。
本書的構成
在本書中提到的設計模式都是面向對象領域耳熟能詳的內容,為了讓讀者更好地理解這些內容,本書通過如下方式對其進行說明。
1.問題說明
本書力爭通過PyExecutor 中的實例,使讀者理解設計模式想要解決的問題。問題說明部分的內容可以看作設計模式的運用場景,而理解場景和設計模式的關係正是選擇和運用設計模式的關鍵。當然,設計模式的運用場景並不限於問題說明中的實例,這一點請讀者務必理解。
2.模式結構
設計模式是若干類協同完成複雜功能的方式,模式結構用來說明設計模式中每個類的職責、分工,以及類與類之間是如何協同工作的。讀者通過閱讀這部分內容,可以對設計模式有一個大致理解。模式結構重點說明的是設計模式的靜態信息,其動態信息可以結合示例代碼進行理解。
3.示例代碼
為了讓讀者對模式結構中的內容加深理解,示例代碼會提供可以執行的代碼。代碼的內容可能是模式結構的簡單實現,也可能會結合一個簡單的示例,總之不會離設計模式本身的內容太遠。所有代碼都是可以執行的,讀者最好在自己的電腦上輸入並調試這些代碼,這樣可以加深對設計模式的理解,因為很多東西只有在程序運行時才能看出來。
4.實戰運用
示例軟件PyExecutor 包含了書中介紹的23 個設計模式。如果原封不動地照搬設計模式,是無法獲得理想的結果的。無論是設計模式本身,還是運用設計模式的對象,都需要根據實際情況進行相應調整,實戰運用中的內容就是這方面的示例。由於PyExecutor 的規模比較大,所以本書不會展示其所有代碼,讀者最好通過下載鏈接獲得代碼,再結合書中的說明,邊調試邊理解代碼。
5.效果討論
效果討論主要用來說明使用設計模式可以解決的問題,以及設計模式為軟件帶來的優勢。通過對示例的說明,讀者已經對設計模式有了自己的認識,這時再去理解設計模式,可以達到事半功倍的效果。
6.提示和技巧
任何事物都不可能只有優點沒有缺點,設計模式也是如此。提示和技巧一方面會說明使用設計模式的注意事項,另一方面也會提供一些深入運用設計模式的建議。
閱讀本書的幾點建議
設計模式多種多樣,其本質就是對需要替換的、變更的內容進行抽象處理,然後再運用多態技術對功能進行擴展,簡單地講就是,想變什麼就抽象什麼,這應該是學習和理解設計模式的最重要的9 個字了。
在學習設計模式時經常遇到的一個問題就是,很多設計模式的類圖都很相似,在實際運用時不知道應該選擇哪一個。出現這個問題的最大原因就是將類圖當成設計模式的依據了。由於面向對象設計唯一的“大招”就是多態,所以很多設計模式的構造看起來或多或少都有些相似。比較合理的步驟是先根據場景選擇設計模式,然後根據設計模式構造(形式)調整類的職責、接口和協作關係。
有些開發者反對設計模式的一個原因就是,使用設計模式容易出現過度設計。關於這個問題,筆者的觀點是:過度設計當然不好,但是這並不是設計模式的錯,而是開發者的問題。這和難以理解的接口、混亂的代碼是同樣的問題。為避免過度設計就不花時間和精力使用設計模式進行設計,就有點因噎廢食了。
關於類圖
本書中的類圖都是按照UML 規範繪製的,但是考慮到不是所有讀者都掌握了UML 知識,所以這裡對其進行簡單說明。
圖0-1 中的每個方框均代表一個類,這個類被橫線分為上下兩部分:橫線上面是該類的類名,橫線下面是該類的多態操作(斜體)或方法(正體)。UML 類圖也有分為上、中、下三部分的情況,這時中間的區域顯示的是類的屬性。
圖0-1 中的帶箭頭的虛線表現的是依賴關係,在大多數情況下它表明一個類會使用另一個類的功能。圖0-1 中Director 類指向Builder 類的依賴關係表明Director 類會使用Builder 類的功能。
圖0-1 中帶空心三角形的有向虛線表現的是實現關係,這種關係的含義是一個類可以實現另一個類定義的接口。例如,圖0-1 中ConcreteBuilder1 類指向Builder 類的實現關係,表示ConcreteBuilder1 類會實現Builder 類定義的接口。但是Python 語言比較特別的一點是:具象Builder 不一定需要一個具體的抽象Builder 類,只要實現者、利用者遵守相同的約定,即可實現利用者和提供者之間的調用關係。這種情況在Python 語言中有一個定義—— protocol。對於這種可選的抽象基類,本書會指定一個<<protocol>>衍型來表明這種關係。
圖0-1 類圖示例1
除此之外,本書還用到了繼承關係,它表現為帶空心三角形的實線,這種關係在UML 中被稱為泛化,在圖0-2 中Leaf 類指向Component 類的關係就屬於這種情況。
這種情況也可以說Leaf 類是Component 類的派生類。
圖0-2 類圖示例2
類之間的實線表示這兩個類之間存在關聯關係,即這兩個類需要協同工作。圖0-2中帶有一個箭頭的實線表明兩個類間的這種關聯關係是單向的,而沒有箭頭的實線表明兩個類間的這種關聯關係是雙向的。
圖0-2 中一端為實心菱形的關聯關係表明整體和部分的關係,其中實心菱形端是整體。這種關係表明當整體消失時,部分也會隨著消失,這種關係被稱為組合關係。
組合關係類似於筆記本電腦和屏幕的關係。部分和整體的關係也有用空心菱形表示的,雖然其含義和組合關係的含義相似,但是整體和部分可以單獨存在,這種關係被稱為聚合關係。聚合關係類似於台式電腦和顯示器的關係。
程序員的語言
將自己寫的代碼公開需要很大的勇氣,有很多程序員甚至不敢在自己寫出的代碼上簽名。在本書中使用的PyExecutor 是筆者為了說明設計模式而開發的一個模擬項目,由於時間和能力的限制,書中的代碼只寫到能將設計模式講清楚的程度,離真正的產品還有很遠的距離。如果讀者希望將這些代碼運用到自己的工作中,那麼還需要對其進行完善和改進。書中關於設計模式、Python 語言和tkinter 庫的用法也有不足之處,懇請各位讀者批評指正。
致謝
感謝電子工業出版社的林瑞和編輯。本書從立意、結構的確定到內容的確認和整理,每個環節都得到了林編輯的建議和意見。毫不誇張地說,如果沒有林編輯的努力,就不會有本書的面世。
感謝我的父母。他們兩個人都沒有讀過什麼書,但是他們不遺餘力地培養孩子讀書,時至今日,我們兄弟幾人雖說沒有出人頭地,但做到了自食其力。
感謝我的夫人。夫人本來也是一個學霸,自結婚以後,她將大部分時間都花在家庭、孩子上,但是她一直無怨無悔。
感謝我的兩個孩子。孩子們為這個家庭帶來了活力,他們在自己成長的同時也見證了父母的成長。在本書寫作過程中,他們也做出了自己的貢獻。目前兩個孩子都處在成長的重要階段,在此希望我可以為他們樹立榜樣。


圖片預覽:

 
  步驟一.
依據網路上的圖書,挑選你所需要的書籍,根據以下步驟進行訂購
選擇產品及數量 結 帳 輸入基本資料 取貨與付款方式
┌───────────────────────────────────────────────────┘
資料確定 確認結帳 訂單編號    

步驟二.
完成付款的程序後,若採用貨到付款等宅配方式,3~7天內 ( 例假日將延期一至兩天 ) 您即可收到圖書。若至分店門市取貨,一週內聯絡取書。

步驟三.
完成購書程序者,可利用 訂單查詢 得知訂單進度。

注意事項.
● 付款方式若為網路刷卡必須等" 2 ~ 3 個工作天"確認款項已收到,才會出貨.如有更改書籍數量請記得按更新購物車,謝謝。

● 大陸出版品封面老舊、磨痕、凹痕等均屬常態,除封面破損、內頁脫落...等較嚴重的狀態外,其餘所有商品將正常出貨。

● 至2018年起,因中國大陸環保政策,部分書籍配件以QR CODE取代光盤音頻mp3或dvd,已無提供實體光盤。如需使用學習配件,請掃描QR CODE 連結至當地網站註冊並通過驗證程序,方可下載使用。造成不便,敬請見諒。

● 我們將保留所有商品出貨權利,如遇缺書情形,訂單未達免運門檻運費需自行負擔。

預訂海外庫存.
商品到貨時間須4週,訂單書籍備齊後方能出貨,如果您有急用書籍,建議與【預訂海外庫存】商品分開訂購。