概念:
每一個模式描述了一個在我們周圍不斷重複發生的問題,以及該問題的解決方案的核心。這樣你就能一次又一次地使用該方案而不必做重複勞動
基礎知識點:
設計模式四個基本要素:模式名稱,問題,解決方案,效果
接口:一種特殊的類,聲明瞭若干方法,要求繼承該接口的類必須實現這些方法。
作用:限制繼承接口的類的方法的名稱及調用方式;隱藏了類的內部實現。接口就是一種抽象的基類(父類),限制繼承它的類必須實現接口中定義的某些方法
設計模式6大原則:
開閉原則:一個軟件實體如類、模塊和函數應該對擴展開放,對修改關閉。即軟件實體應儘量在不修改原有代碼的情況下進行擴展。
里氏(Liskov)替換原則:所有引用基類(父類)的地方必須能透明地使用其子類的對象。
依賴倒置原則:高層模塊不應該依賴低層模塊,二者都應該依賴其抽象;抽象不應該依賴細節;細節應該依賴抽象。換言之,要針對接口編程,而不是針對實現編程。
接口隔離原則:使用多個專門的接口,而不使用單一的總接口,即客戶端不應該依賴那些它不需要的接口。
迪米特法則:一個軟件實體應當儘可能少地與其他實體發生相互作用。
單一職責原則:不要存在多於一個導致類變更的原因。通俗的說,即一個類只負責一項職責。
常見設計模式:
工廠模式:不直接向客戶端暴露創建的實現細節,而是通過一個工廠類來負責創建產品類的實例
優點:隱藏了對象創建的實現細節;客戶端不需要修改代碼
缺點:違反了單一職責,將創建邏輯集中到一個類中;當添加新產品時需要修改工廠類代碼,違反了開閉原則
單例模式:保證一個類只有一個實例,並提供一個訪問它的全局訪問點
使用場景:當類只能有一個實例而且客戶可以從一個衆所周知的訪問點訪問它時
優點:對唯一實例的受控訪問;單例相當於全局變量,但防止了命名空間被污染
與單例模式功能相似的概念:全局變量、靜態變量(方法)
代理模式:爲其他對象提供一種代理以控制對這個對象的訪問
使用場景:爲遠程對象提供代理
優點:隱藏對象位於遠程地址空間的事實