官术网_书友最值得收藏!

前言

Python是一種面向?qū)ο蟮哪_本語(yǔ)言,應(yīng)用十分廣泛。在軟件工程領(lǐng)域,設(shè)計(jì)模式意為解決軟件設(shè)計(jì)問(wèn)題的方案。雖然設(shè)計(jì)模式的概念已經(jīng)存在了一段時(shí)間,但它仍是軟件工程領(lǐng)域的熱門話題。設(shè)計(jì)模式能為軟件開發(fā)人員提供優(yōu)質(zhì)的信息源,以解決他們經(jīng)常碰到的問(wèn)題。

本書將介紹各種設(shè)計(jì)模式,并輔以現(xiàn)實(shí)生活中的例子進(jìn)行講解。你將掌握Python編程的底層細(xì)節(jié)與概念,與此同時(shí),你并不需要關(guān)注Java與C++中對(duì)相同問(wèn)題的常用解法。你也會(huì)閱讀到有關(guān)修改代碼、最佳實(shí)踐、系統(tǒng)架構(gòu)及其設(shè)計(jì)等方面的章節(jié)。

本書將會(huì)幫助你學(xué)習(xí)設(shè)計(jì)模式的核心概念,并用其解決軟件設(shè)計(jì)問(wèn)題。我們將著重討論“四人組”(GoF, Gang of Four)的設(shè)計(jì)模式——一些用于解決日常問(wèn)題的設(shè)計(jì)模式的統(tǒng)稱。它們能通過(guò)有效的響應(yīng)式模式,幫助你構(gòu)建有彈性、可伸縮、穩(wěn)健的應(yīng)用程序,并將你的編程技能提升至新的高度。閱讀完本書后,你將能高效地開發(fā)應(yīng)用,并解決常見的問(wèn)題。同時(shí),你也能夠輕松地處理任何規(guī)模的可伸縮、可維護(hù)的項(xiàng)目。

讀者對(duì)象

本書適合中級(jí)Python開發(fā)者閱讀。沒有設(shè)計(jì)模式相關(guān)知識(shí)的讀者同樣可以暢快地閱讀本書。

本書內(nèi)容

第1章“工廠模式”介紹如何使用工廠設(shè)計(jì)模式(工廠方法和抽象工廠)來(lái)初始化對(duì)象,并說(shuō)明相較于直接實(shí)例化對(duì)象,使用工廠設(shè)計(jì)模式的優(yōu)勢(shì)。

第2章“建造者模式”對(duì)于由多個(gè)相關(guān)對(duì)象構(gòu)成的對(duì)象,介紹如何簡(jiǎn)化其創(chuàng)建過(guò)程。

第3章“其他創(chuàng)建型模式”介紹如何用一些技巧解決其他對(duì)象創(chuàng)建問(wèn)題,如使用原型模式,通過(guò)完全復(fù)制(也就是克隆)一個(gè)已有對(duì)象來(lái)創(chuàng)建一個(gè)新對(duì)象。你也會(huì)了解到單例模式。

第4章“適配器模式”介紹如何以最小的改變實(shí)現(xiàn)現(xiàn)有代碼與外來(lái)接口(例如外部代碼庫(kù))的兼容。

第5章“裝飾器模式”介紹如何在不使用繼承的情況下增強(qiáng)對(duì)象的功能。

第6章“橋接模式”介紹如何將一個(gè)對(duì)象的實(shí)現(xiàn)細(xì)節(jié)從其繼承結(jié)構(gòu)中暴露給其他對(duì)象的繼承結(jié)構(gòu)。這一章鼓勵(lì)你進(jìn)行組合而非繼承。

第7章“外觀模式”介紹如何創(chuàng)建單個(gè)入口點(diǎn)來(lái)隱藏系統(tǒng)的復(fù)雜性。

第8章“其他結(jié)構(gòu)型模式”介紹享元模式、MVC(Model-View-Controller,模型-視圖-控制器)模式與代理模式。享元模式通過(guò)復(fù)用對(duì)象池中的對(duì)象來(lái)提高內(nèi)存利用率及應(yīng)用性能。MVC模式用于桌面與Web應(yīng)用開發(fā),通過(guò)避免業(yè)務(wù)邏輯與用戶界面代碼的耦合,提高應(yīng)用的可維護(hù)性。代理模式通過(guò)提供一個(gè)特殊對(duì)象作為其他對(duì)象的代理來(lái)控制對(duì)其他對(duì)象的訪問(wèn),以降低復(fù)雜性,增強(qiáng)應(yīng)用性能。

第9章“職責(zé)鏈模式”介紹另一種提高應(yīng)用程序可維護(hù)性的技巧,其通過(guò)避免業(yè)務(wù)邏輯與用戶界面代碼的耦合,提高應(yīng)用的可維護(hù)性。

第10章“命令模式”介紹如何將撤銷、復(fù)制、粘貼等操作封裝成對(duì)象,從而使指令的調(diào)用與執(zhí)行解耦。

第11章“觀察者模式”介紹如何向多個(gè)接收者發(fā)送指令。

第12章“狀態(tài)模式”介紹如何創(chuàng)建一個(gè)狀態(tài)機(jī)以對(duì)問(wèn)題進(jìn)行建模,并說(shuō)明這種技術(shù)的優(yōu)勢(shì)。

第13章“其他行為型模式”介紹一些其他的高級(jí)編程技巧,包括如何基于Python創(chuàng)建一種簡(jiǎn)單的語(yǔ)言。領(lǐng)域?qū)<铱梢允褂眠@種語(yǔ)言,而不必學(xué)習(xí)Python。

第14章“響應(yīng)式編程中的觀察者模式”介紹如何在狀態(tài)發(fā)生變化時(shí),向已注冊(cè)的相關(guān)者發(fā)送數(shù)據(jù)流與事件。

第15章“微服務(wù)與面向云的模式”介紹一些系統(tǒng)設(shè)計(jì)模式,其對(duì)于當(dāng)今日益廣泛使用的云原生應(yīng)用與微服務(wù)架構(gòu)十分重要。面向微服務(wù)的框架、容器和其他技術(shù)可將應(yīng)用劃分為功能性和技術(shù)性服務(wù),以實(shí)現(xiàn)維護(hù)和部署的獨(dú)立。人們?cè)絹?lái)越依賴遠(yuǎn)程服務(wù)作為應(yīng)用程序的一部分(如API),這為重試機(jī)制提供了使用場(chǎng)景。在這些場(chǎng)景下,請(qǐng)求有可能失敗,但如果多次重復(fù)請(qǐng)求,成功的概率就會(huì)增大。作為容錯(cuò)重試的補(bǔ)充,你將會(huì)學(xué)到如何使用斷路器,這樣在子系統(tǒng)發(fā)生故障之時(shí)不至于摧毀整個(gè)系統(tǒng)。在重度依賴從數(shù)據(jù)存儲(chǔ)中獲取數(shù)據(jù)的應(yīng)用程序之中,使用旁路緩存模式能夠通過(guò)緩存從數(shù)據(jù)存儲(chǔ)中讀取數(shù)據(jù),從而提升性能。這種模式可以用于從數(shù)據(jù)存儲(chǔ)中讀取數(shù)據(jù)和向數(shù)據(jù)存儲(chǔ)更新數(shù)據(jù)。最后,這一章將介紹節(jié)流模式,這一概念基于限速,或者說(shuō)替代技術(shù)。你可以控制用戶使用API或服務(wù)的方式,并確保你的服務(wù)不因某個(gè)特定的租戶而過(guò)載。

如何充分利用本書

? 使用最新版本的Windows、Linux或macOS。

? 安裝Python 3.6。同時(shí),了解Python 3中的高級(jí)語(yǔ)法與新語(yǔ)法也十分有用。你可能還需要了解如何編寫符合Python規(guī)范的代碼。為此,你可以在互聯(lián)網(wǎng)上查找相關(guān)問(wèn)題的資源。

? 在你的計(jì)算機(jī)上安裝并使用Docker,以簡(jiǎn)單地安裝并運(yùn)行第15章示例需要的RabbitMQ服務(wù)器。如果你選擇使用Docker安裝方法——打包為容器的許多服務(wù)器軟件和服務(wù)愈發(fā)需要Docker安裝方法,可以通過(guò)https://hub.docker.com/_/rabbitmq/https://docs.nameko.io/en/stable/installation.html找到有用的信息。

下載示例代碼

你可以從www.PacktPub.com下載本書的示例代碼文件。如果你在其他地方購(gòu)買了本書,可以訪問(wèn)www.packtpub.com/support并注冊(cè),這些文件將直接通過(guò)電子郵件發(fā)送給你。

你可以通過(guò)以下步驟下載代碼文件:

? 在www.packtpub.com登錄或注冊(cè);

? 選擇SUPPORT標(biāo)簽;

? 點(diǎn)擊Code Downloads & Errata;

? 在搜索框輸入書名并遵循屏幕上的指示。

下載完文件后,確保使用如下軟件的最新版本來(lái)解壓或提取文件夾。

? Windows:WinRAR/7-Zip

? Mac:Zipeg/iZip/UnRarX

? Linux:7-Zip/PeaZip

本書的代碼包也托管在GitHub上,地址為https://github.com/PacktPublishing/Mastering-Python-Design-Patterns-Second-Edition。如果代碼更新了,現(xiàn)有的GitHub倉(cāng)庫(kù)上也會(huì)進(jìn)行更新。

你還可以在https://github.com/PacktPublishing/上下載我們豐富的圖書和視頻中的其他代碼包。來(lái)看看吧!

排版約定

本書中使用了許多文本樣式。

文本中的代碼、數(shù)據(jù)庫(kù)表名等采用等寬字體。例如:“在Musician類中,主要?jiǎng)幼魇怯蓀lay()方法執(zhí)行的。”

代碼塊的格式如下:

class Musician:
    def __init__(self, name):
        self.name = name
    def __str__(self):
        return f'the musician {self.name}'
    def play(self):
        return 'plays music'

新術(shù)語(yǔ)、重點(diǎn)強(qiáng)調(diào)的內(nèi)容,或你在屏幕上看到的內(nèi)容用黑體字表示。例如,出現(xiàn)在文本中的菜單或?qū)υ捒蛑械膯卧~。例如:“遠(yuǎn)程代理充當(dāng)一個(gè)對(duì)象的本地表示,該對(duì)象實(shí)際上位于不同的地址空間(例如,網(wǎng)絡(luò)服務(wù)器)中。”

此圖標(biāo)表示警告或重要的注釋。

此圖標(biāo)表示提示和技巧。

聯(lián)系我們

我們始終歡迎讀者的反饋。

一般反饋:發(fā)郵件到feedback@packtpub.com,并在郵件主題中注明書名。如果你對(duì)本書的任何方面有任何疑問(wèn),請(qǐng)通過(guò)questions@packtpub.com聯(lián)系我們。

勘誤:雖然我們已經(jīng)竭盡全力確保內(nèi)容的準(zhǔn)確性,但錯(cuò)誤在所難免。如果你在本書中發(fā)現(xiàn)了錯(cuò)誤,請(qǐng)向我們報(bào)告,我們將不勝感激。請(qǐng)?jiān)L問(wèn)www.packtpub.com/submit-errata,選擇你的書名,點(diǎn)擊勘誤提交表單鏈接,并輸入詳細(xì)信息。本書中文版勘誤請(qǐng)到http://ituring.cn/book/2680查看和提交。——編者注

反盜:如果你在互聯(lián)網(wǎng)上看到我們作品的任何形式的非法復(fù)制品,如果能向我們提供地址或網(wǎng)站名稱,我們將不勝感激。請(qǐng)通過(guò)copyright@packtpub.com與我們聯(lián)系。

成為作者:如果你有擅長(zhǎng)的專題,并且對(duì)圖書寫作或出版感興趣,請(qǐng)?jiān)L問(wèn)authors.packtpub.com

評(píng)論

請(qǐng)留下評(píng)論。你閱讀并使用本書之后,為何不在購(gòu)買它的網(wǎng)站上留下評(píng)論呢?首先,潛在的讀者可以看到并參考你的公正意見,從而做出是否購(gòu)買的決定。其次,Packt出版社可以了解你對(duì)我們產(chǎn)品的看法。最后,作者也可以看到你對(duì)他們的書的反饋。謝謝你!

更多關(guān)于Packt的信息,請(qǐng)?jiān)L問(wèn)packtpub.com

電子書

掃描如下二維碼,即可購(gòu)買本書中文電子版。

主站蜘蛛池模板: 怀仁县| 迭部县| 浦江县| 柳林县| 呼玛县| 临泉县| 百色市| 防城港市| 榆社县| 临漳县| 宁海县| 陈巴尔虎旗| 龙岩市| 盐城市| 金华市| 抚顺县| 久治县| 通城县| 莱西市| 句容市| 阿勒泰市| 洛南县| 炎陵县| 锡林浩特市| 高阳县| 东莞市| 高要市| 平昌县| 临猗县| 丰都县| 西乌珠穆沁旗| 天津市| 炎陵县| 科技| 安阳市| 和平区| 九江市| 湄潭县| 鸡东县| 大方县| 马公市|