简单理解-Head First 设计模式
Part 0 閑聊
Part 1 閑聊
首先,想告訴大家的是,《Head First 設(shè)計模式》是一本通俗易懂的書,無論是在校大學生還是工作3,5年后的碼農(nóng)們,讀來應(yīng)該都是輕松?愉快的。至少此書比權(quán)威書籍——四人組的《設(shè)計模式》容易理解和堅持看完。而我是花了2個月的晚上和周末斷斷續(xù)續(xù)時間看完的,別被這637頁的厚度給嚇倒了,很多插圖和敘述是可以帶著看小書的心情和節(jié)奏去完成的。其實你會給自己立一個flag,最好能落實到天、小時,這樣執(zhí)行到位不到位就很一目了然了。下面是我的閱讀時間表,時間上算是很寬裕了,因為我還預估了思考和對比記憶的時間。
一共14章,預計2個月完成(10月中旬~截止日期12-15) 1周2章,2天1章,1章40頁,1天20頁(早上1個小時+晚上)目標1:11月1號看完第5章,即190頁 目標2:11月29號看完第13章,4周8章,即610頁 目標3:12月15號完成本書第一遍閱讀Part 2 內(nèi)容
我們知道四人組的《設(shè)計模式》共介紹了23種,并且將其分成3類,分別是:創(chuàng)建型、結(jié)構(gòu)型、行為型,如下所示:
- 創(chuàng)建型:5個。工廠方法模式、抽象工廠模式、Builder模式(Retrofit)、單例模式(類初始化)、原型模式
- 結(jié)構(gòu)型:7個。適配器模式、裝飾模式(File操作)、代理模式(靜態(tài)代理——代理對象內(nèi)部操作委托對象、動態(tài)代理——代理對象里面不指定特定的委托對象,更加靈活)、組合模式、橋接模式、外觀模式、享元模式
- 行為型:11個。觀察者模式(RxJava)、策略模式(用策略模式的多態(tài)代替switch)、模板方法模式、命令模式、迭代器模式(集合的Iterator)、中介者模式、備忘錄模式、解釋器模式、狀態(tài)模式、責任鏈模式、訪問者模式
《Head First 設(shè)計模式》的主要內(nèi)容就是,前面用1~11章介紹他們覺得常用的14個設(shè)計模式;然后用12章介紹了MVP復合模式包含的設(shè)計模式;緊接著的13章分享了設(shè)計模式的概念、分類以及反模式等對設(shè)計模式的思考與感悟;這里也和目錄后面第1章前面的引子想呼應(yīng),對于思考的思考;最后第14章各用2頁介紹剩余的9個設(shè)計模式。
下面我們進入本文的重點,看看每章的核心內(nèi)容,更詳細的內(nèi)容還需讀者親自品味。
1)策略(Strategy)模式
- 面向?qū)ο?#xff08;oo)基礎(chǔ):抽象、封裝、多態(tài)、繼承;
- oo設(shè)計特性:可復用、可擴充、可維護;
- oo原則:封裝變化(把會變化的部分取出并封裝起來,好讓其他部分不會收到影響)、多用組合、少用繼承(組合可以委托(外包))、針對接口編程,不針對實現(xiàn)編程;
- oo模式:策略模式,定義算法族,分別封裝起來,讓它們之間可以相互替換,此模式讓算法的變化獨立于使用算法的客戶。
2)觀察者(Observer)模式
- oo原則:為交互對象之間的松耦合設(shè)計而努力(更有彈性、更能應(yīng)對變化和將互相依賴降到了最低);
- oo模式:觀察者模式,在對象之間定義一對多的依賴,這樣一來,當一個對象改變狀態(tài),依賴它的對象都會收到通知,并自動更新。
3)裝飾者(Decorator)模式
- oo原則:開閉原則(對擴展開放,對修改關(guān)閉);
- oo模式:裝飾者模式,動態(tài)地將責任附加到對象上,想要擴展功能,裝飾者提供有別于繼承的另一種選擇。
4)工廠方法(Factory Method)模式、抽象工廠(Abstract Factory)模式
- oo原則:依賴抽象,不要依賴具體類;
- oo模式:工廠方法模式,定義了一個創(chuàng)建對象的接口,但由子類決定要實例化的類是哪一個,工廠方法讓類把實例化推遲到子類;抽象工廠模式,提供一個接口,用于創(chuàng)建相關(guān)或依賴對象的家族,而不需要明確指定具體類。
5)單例(Singleton)模式
- oo模式:單例模式,確保一個類只有一個實例,并提供全局訪問點。
6)命令(Command)模式
- oo模式:命令模式,將請求封裝成對象,這可以讓你使用不同的請求、隊列,或者日志請求來參數(shù)化其他對象,命令模式也可以支持撤銷操作。
7)適配器(Adapter)模式、外觀(Facade)模式
- oo原則:最少知識原則,只和你的密友談話;
- oo模式:適配器模式,將一個類的接口,轉(zhuǎn)換成客戶期望的另一個接口;外觀模式,提供了一個統(tǒng)一的接口,用來訪問子系統(tǒng)中的一群接口。
8)模版方法(Template)模式
- oo原則:好萊塢原則,別調(diào)用我們,我們會調(diào)用你;
- oo模式:模版方法模式,在一個方法中定義一個算法的骨架,將一些步驟延遲到子類中,模版方法使得子類可以在不改變算法結(jié)構(gòu)的情況下,重新定義算法中的某些步驟;
- 內(nèi)容還包括:與策略模式的對比,它們都封裝算法,一個用組合,一個用繼承。
9)迭代器(Iterator)模式、組合(Composite)模式
- oo原則:類應(yīng)該只有一個改變的理由;
- oo模式:迭代器模式,提供一種方法順序訪問一個聚合對象中的各個元素,而又不暴露其內(nèi)部的表示;組合模式,允許你將對象組成樹形結(jié)構(gòu)來表現(xiàn)整體/部分的層次結(jié)構(gòu),組合能讓客戶以一致的方式處理個別對象和對象組合。
10)狀態(tài)(State)模式
- oo模式:狀態(tài)模式,允許對象在內(nèi)部狀態(tài)改變時改變它的行為,對象看起來好像修改了它的類;
- 內(nèi)容還包括:狀態(tài)模式與策略模式的區(qū)別,它們類圖一樣,意圖不同。
11)代理(Proxy)模式
- oo模式:代理模式,為另一個對象提供一個替身或占位符以訪問這個對象(遠程代理、動態(tài)代理、虛擬代理、保護代理、緩存代理。。。);
- 內(nèi)容還包括:代理模式與裝飾者模式的區(qū)別,裝飾者模式為對象加上行為,而代理則是控制訪問。
12)MVC
- oo模式:復合模式,結(jié)合2個或2個以上的模式,組成一個解決方案,解決一再發(fā)生的一般性問題;
- MVC,M使用觀察者模式,V使用組合模式,C使用策略模式。
Part 3 小手冊
下面是本書的一個集合小手冊的照片:
Part 4 心得
- 設(shè)計模式并不是傳說中的那么難,從《設(shè)計模式》到《大話設(shè)計模式》,再到《Head First 設(shè)計模式》,后浪在前浪的基礎(chǔ)上再此咀嚼,以留給未來的后浪觀摩學習,變得越來越大白話、簡單,其實核心思想還是沒變,就像我們還是打工人一樣。
- 學以致用吧,得到再好的思想、再好的工具,不實操的話永遠只是紙上談兵,應(yīng)該在需要的時候就用上。
- 自己也想做一個設(shè)計模式的安利者,學到的就是賺到的,我希望其他小伙伴也能賺得盆滿缽滿。
總結(jié)
以上是生活随笔為你收集整理的简单理解-Head First 设计模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端学习(2267)vue造轮子之添加i
- 下一篇: asp.net ajax控件工具集 Au