原创 GoF設計模式-適配器模式

    適配器模式(重要):         又叫包裝器,將一個接口轉換成另一個用戶希望的接口,使得原本不兼容的兩個類可以協同工作。既可以作爲類結構型模式,又可以作爲對象結構型模式。由目標抽象類、適配器類、適配者類、客戶類組成,客戶類針對

原创 GoF設計模式-解釋器模式

    解釋器模式(不重要):         類行爲型模式,定義語言的文法,建立一個解釋器來解釋該語言中的句子         解釋器的結構:             (1)抽象表達式:聲明抽象的解釋操作,是終結符表達式和非終結符表達式

原创 GoF設計模式-代理模式

    代理模式(重要):         對象結構型模式,使用代理對象來間接訪問被代理對象,爲了用戶使用的透明性,代理對象和被代理對象需要實現相同的接口(以便在任何地方替換被代理類),代理類中包含對被代理類的引用         代理模

原创 GoF設計模式-單例模式(如何實現線程安全、避免克隆、反射以及反序列化)

    單例模式(重要):         保證一個類只有一個實例,自行創建這個類的實例,提供靜態公共方法向系統提供這個類的實例,這樣的類稱爲單例類。         要點:1.將類的構造方法設置爲私有  2.定義一個自身的靜態私有成員變

原创 GoF設計模式-職責鏈模式

    職責鏈模式(不重要):         對象行爲型模式,將請求者與處理者解耦,請求沿着對象鏈傳遞,直到被符合條件的對象處理。無須關心請求的處理細節和傳遞過程,只需要將請求提交給職責鏈即可         職責鏈模式的角色:請求者,

原创 GoF設計模式-橋接模式

    橋接模式(重要):         又稱爲接口模式,將抽象化與實現化分離,使它們可以獨立地變化。如果系統中存在兩個獨立變化的維度(原因),那麼可以使用關聯關係將它們解耦,使它們可以獨立地擴展,用關聯關係代替多層繼承,減少了系統中類

原创 GoF設計模式-迭代器模式模式

    迭代器模式(重要):         對象結構型模式,提供一種方法來訪問來聚合對象,而不暴露這個聚合對象的內部數據。通過引入迭代器將數據的遍歷功能從聚合對象中分離出來,聚合對象只負責存儲數據,而遍歷數據由迭代器來完成,簡化了聚合對

原创 GoF設計模式-外觀模式

    外觀模式(重要):         對象結構型模式,在用戶與子系統之間引入一個外觀類爲複雜的子系統提供一個訪問的統一接口,將用戶與子系統解耦,降低系統的耦合度,複雜度。         爲了節約系統資源,通常將外觀類設計爲單例類,

原创 GoF設計模式-簡單工廠模式

簡單工廠模式(重要):     又叫靜態工廠方法,可根據傳遞不同的參數返回不同類的對象,專門定義一個類來創建其他類的實例,這些類的實例通常具有共同的父類(接口,抽象類)。在工廠類中只需要簡單的邏輯判斷,不關心業務處理,滿足單一職責原則 

原创 GoF設計模式-原型模式

    原型模式(重要):             當需要多次創建相同或相似對象時,可以複製這個對象。          淺克隆:複製對象本身和基本類型的成員變量(String當做引用類型看待),對於引用類型的成員變量僅複製其引用地址,而

原创 GoF設計模式-工廠方法模式

工廠方法模式(重要):          又叫工廠模式或多態工廠,工廠父類負責定義具體實例化類的公共接口,工廠子類負責生成具體的實例化對象,目的是將實例化操作交給工廠子類完成,在程序運行時再確定具體工廠子類的類型,用子類對象覆蓋父類對象

原创 GoF設計模式-建造者模式

建造者模式(一般):     又叫生成器模式,用於創建包含多個屬性的複雜對象,然後返回完整的對象給用戶。將一個複雜對象的創建與它的表示分離,使得同樣的創建過程可以創建不同的表示,一步一步地創建一個複雜的對象。包含的角色有要創建的複雜對象、

原创 設計模式概述和麪向對象設計的原則

模式是對特定問題的解決方案,設計模式是前人通過開發經驗對特定代碼設計,代碼編寫等總結出來的一套解決特定問題的方案,來提高代碼的可維護性、可重用性、可理解性、可靠性等。 設計模式的優點:          1.是前人經驗的總結,可以降低開發

原创 GoF設計模式-抽象工廠模式

抽象工廠模式(重要):     抽象工廠模式提供了創建一系列相關或相互依賴對象的接口,而無須知道他們具體的類。工廠方法模式是一種特殊的抽象工廠模式,更加地抽象。兩者最大的區別在於工廠方法模式針對一個產品等級結構(繼承結構),而抽象工廠模式

原创 GoF設計模式-組合模式

    組合模式(重要):         結構型模式,又叫整體-部分模式,將葉子對象與容器對象遞歸組合,使得用戶在使用時無須區別,可以一致地使用葉子對象和容器對象。         葉子對象:只能作爲普通對象適用         容器對