浅读设计模式 - 1
前言-基本概念
-
設計模式并不使用獨特的語言特性,也不采用那些神奇的編程技巧。所有的模式均可以用標準的面向對象語言實現,這也許會多費一些功夫,但是增加了軟件的靈活性和可復用性。
-
書中根據模式的性質將模式劃分為三類:創建型(creational)、結構型(structural)、行為型(behavioral)。 創建型模式與對象的創建有關;結構型模式處理類或對象的組合;行為型模式對類或對象怎樣交互和怎樣分配職責進行描述。
-
多態:對象接口與其功能實現是分離的,不同對象可以對請求做不同的實現,也就是說,兩個有相同接口的對象可以有完全不同的實現。
-
在面向對象系統中,接口是基本的組成部分,對象只有通過它們的接口才能與外部交流,如果不通過對象的接口就無法知道對象的任何事情,也無法請求對象做任何事情。
-
理解對象的類和類型(抽象、具體、混入)之間的差別非常重要:一個對象的類定義了對象是怎樣實現的,同時也定義了對象的內部狀態和操作的實現。但是對象的類型只與它的接口有關,接口即對象能響應的請求的集合,一個對象可以有多個類型,不同類也可以有相同的類型。
-
所有從抽象類導出的類將共享該抽象類的接口,這時,所有的子類都能相應抽象類中的請求。只根據抽象類中定義的接口來操作對象有以下兩個好處: 1)客戶無須知道他們使用對象的特定類型,只須對象有客戶所期望的接口。 2)客戶無須知道他們使用的對象是用什么類來實現的,他們只須知道定義接口的抽象類。 這樣可以極大地減少系統實現之間的相互依賴,也產生了可復用的面相對象設計的如下原則: 針對接口編程,而不是針對實現編程。
-
混入類是給其他類提供可選擇的接口或功能的類,它與抽象類一樣不能實例化,都是用于繼承的,抽象類和混入類都是對象的類型。
-
優先使用對象組合,而不是類繼承。 因為當需要復用子類時,實現上的依賴性就會產生一些問題。如果繼承下來的實現不適合解決新的問題,則父類必須重寫或被其他更適合的類替換。這種依賴關系限制了靈活性并最終限制了復用性。優先使用對象組合有助于保持每個類被封裝,并被集中在單個任務上;基于對象組合的設計有更多的對象(而有較少的類),且系統的行為將依賴于對象間的關系而不是被定義在某個類中。
-
委托(在一個對象中引用另一個對象,以此來完成請求)是對象組合的特例。它告訴你對象組合作為一個代碼復用機制可以替代繼承。
-
設計問題對框架設計而言最具重要性。(相比應用和工具庫)一個使用設計模式的框架比不使用設計模式的框架更可能獲得高層次的設計復用和代碼復用。成熟的框架通常使用了多種設計模式。了解設計模式的人能更快的洞悉框架。
轉載于:https://juejin.im/post/5b163f336fb9a01e4f47bb29
總結
以上是生活随笔為你收集整理的浅读设计模式 - 1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python面试总结
- 下一篇: 局域网物理机与虚拟机的互通访问