1)面向過程經過劃分功能模塊,經過函數間相互調用來實現,但需求變化時就須要更改函數,而你改動的函數有多少地方在調用她呢?關聯多少數據,這是很不容易弄得清楚地地方。或許開發者本人弄得清楚,可是下一個維護人員未必可以吃透。因此,因爲這種強耦合性直接致使程序的擴展性和可維護性下降,後期維護的成本天然增高了很多。編程
2)面向對象關注的是對象,對象的優勢在於,能夠定義本身負責的事務,作要求它本身作的事情。對象應該本身負責本身,並且應該清楚的定義責任。設計模式
3)通常面向對象開發只是關心這麼幾個問題:「這個東西叫作什麼;他從哪裏來;她能作什麼事情。」,而後,具體的業務邏輯經過這些對象相互之間調用完成;然而,面向過程只是關心一個問題:「你的業務邏輯是什麼」;而後,就開始面向過程編程,看似很酷,實質上由於沒有合理結構話數據,致使數據的維護量增大。函數
4)面向過程設計開發相對容易,但不容易應對變化。面向對象設計開發困難,但卻能更好應對變化。spa
設計模式總共23個,可是經常使用的不到10個,下面就把這23個設計模式進行整理歸類,具體以下:設計
1)建立型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。代理
2)結構型模式,共七種:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。orm
3)行爲型模式,共十一種:策略模式、模板方法模式、觀察者模式、迭代器模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解釋器模式。對象
1)工廠方法模式:定義一個用戶建立對象的接口,讓子類決定實例化哪個類,工廠模式使一個類的實例化延遲到其子類。接口
建立型模式抽象了實例化過程。他幫助咱們一個系統獨立於如何建立、組合和表示它的那些對象。建立型模式都會將關於該系統使用哪些具體的類信息封裝起來。容許客戶用結構和功能差異很大的產品對象配置一個系統。配置能夠是靜態的,即在編譯時指定,也能夠是動態的就是在運行是指定。事務
一般設計應該是從工廠方法模式開始,當設計者發現須要更大的靈活性時,設計便會向其餘建立型模式演化,當設計者在設計標準之間進行權衡的時候,瞭解多個建立型模式能夠給設計者更多的選擇餘地。
2)抽象工廠模式:提供一個建立一系列相關或相互依賴的對象的接口,而無需指定他們的具體類。
建立型模式隱藏了這些類的實例是如何被建立和放在一塊兒,整個系統關於這些對象所知道的是由抽象類所定義的接口。這樣,建立型在建立了什麼,誰建立了它,它是怎麼被建立的,以及什麼時候建立這些方面提供了很大的靈活性。
3)單例模式:保證一個類僅有一個實例,並提供一個訪問它的全局訪問點。
讓類自身來負責保存它惟一的實例。這個類能夠保證沒有其餘實例能夠被建立,而且咱們還提供了一個飛吻該實例的方法,這樣使得對惟一的實例能夠嚴格的控制客戶怎樣以及什麼時候訪問它。
4)建造者模式:將一個複雜對象的構建與它的表示分離,使得一樣的構建過程能夠建立不一樣的表示;
內聚性描述的是一個例程內部組成部分之間相互聯繫的緊密程度。而耦合性描述的是一個例程與其餘例程之間聯繫的緊密程度。軟件開發的目標應該是建立這樣的例程:內部完整,也是高內聚,而與其餘例程之間聯繫則是小巧、直接、可見、靈活的,這就是鬆耦合。
而建造者則是一個複雜對象的構建與它表示分離,使用統一的構建過程建立不一樣的產品對象給客戶。
5)原型模式:用原型實例指定建立對象的種類,而且經過拷貝這些原型建立新的對象。
創建相應數目的的原型並克隆他們一般比每次用合適的狀態手工實例化類更方便一些。
未完待續,後期整理結構型和行爲型設計模式...............