OO特色:算法
封裝,繼承,多態編程
oo原則 :
封裝變化;
多用組合,少用繼承;
針對接口編程,不針對實現編程; 服務器
高內聚低耦合網絡
設計原則ui
單一職責原則:單一責任 一個類應該只有一個引發變化的緣由 spa
里氏替換原則.net
依賴倒置原則:要依賴抽象,不要依賴具體類(Dependency Inversion Principle) 設計
接口隔離原則:爲交互對象之間的鬆耦合設計而努力; 代理
迪米特法則(Law of Demeter)---最少知識原則---->依賴儘量少的類 指針
開放-關閉原則:對擴展開放,對修改關閉
模式定義:
1.策略模式定義了算法族,分別封裝起來,讓它們之間能夠互相替換,此模式讓算法的變化獨立於使用算法的客戶
2.命令模式的設計如何支持請求調用者和請求接收者之間的解耦?
命令模式將"請求"封裝成對象(命令),以便使用不一樣的請求、隊列或者日誌來參數化其餘對象。
動做和接收者在命令對象中被綁在一塊兒,命令對象提供一個方法,這個方法封裝了一系列動做,調用這個方法就會調用接收者的這些動做
請求調用者持有一個命令對象,並在某個時間點調用命令對象的execute()方法,將請求付諸實施。
接收者知道如何進行必要的工做。
3.裝飾者模式 動態的將責任附加到對象上。若要擴展功能,裝飾者提供了比繼承更有彈性的替代方案
組合和委託可用於在運行時動態的加上新的行爲
裝飾者通常對組件的客戶是透明的;
裝飾者會致使設計中出現許多小對象,若是過分使用,會使程序變得很複雜
4.適配器模式 將一個類的接口,轉換成客戶指望的另外一個接口。適配器讓本來接口不兼容的類能夠合做無間。
對象適配器使用組合(適配器繼承了Target,組合了Adaptee),類適配器使用繼承(適配器繼承了Target和Adaptee)。
5.外觀模式 提供了一個統一的接口,用來訪問子系統中得一羣接口。外觀定義了一個高層接口,讓子系統更容易使用
6.模板方法 在一個方法中定義一個算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類能夠在不改變算法結構的狀況下,從新定義算法中的某些步驟。
工廠方法是模板方法的一種特殊版本,原語操做用來建立並返回對象。
7.迭代器模式 提供一種方法順序訪問一個聚合對象中得各個元素,而又不暴露其內部的表示。
8.組合模式 容許你將對象組合成樹形結構來表現「總體/部分」層次結構。組合能讓客戶以一致的方式處理個別對象以及對象組合
9.狀態模式 容許對象在內部狀態改變時改變它的行爲,對象看起來好像修改了它的類。
狀態模式容許對象基於內部狀態而擁有不一樣的行爲。
狀態模式和策略模式有相同的類圖,可是它們的意圖不一樣。
策略模式一般會用行爲或算法來配置context類
狀態模式容許context隨着狀態的改變而改變行爲
狀態轉換能夠由state類或者context類控制
使用狀態模式一般會致使設計中類的數目大量增長
狀態類能夠被多個context實例共享
10. 代理模式 爲另外一個對象提供一個替身或佔位符以控制對這個對象的訪問。
RMI將客戶輔助對象稱爲stub(樁),服務輔助對象稱爲skeleton(骨架)
幾種代理控制訪問的方式:
遠程代理控制訪問遠程對象;
虛擬代理控制訪問建立開銷大得資源;
保護代理基於權限控制着對資源的訪問。
模式分類
建立類型的模式包括
單例模式 (Singleton Pattern) - 根據單一模式實現的類只容許有一個是類,而且提供了一個全局指針來引用該實例。
工廠模式 (Factory Pattern) - 根據工廠模式實現的類能夠根據提供的數據生成一組類中某一個類的實例,而這一組類有一個公共的抽象父類。
抽象工廠模式 (Abstract Factory Pattern) - 抽象工廠模式也能夠根據提供的數據生成一組類中某一個類的實例,而這一組類有一個公共的抽象父類。只不過它定義的是一個接口。
原型模式 (Prototype Pattern) - 原型模式經過對類的實例進行拷貝來建立新的實例。
建立者模式 (Builder Pattern) - 構造者模式將一個複雜對象的構造過程和它的表現層分離開來,這樣類就能夠根據不一樣狀況展示出不一樣的表現方式。
結構類型的模式
結構類型的模式將類和對象組合起來,以構成更加複雜的結構。它又被劃分爲類模式和對象模式。類模式和對象模式之間的區別在於類模式經過繼承關係來提供有效的接口;
而類模式經過對象合成或將對象包含在其它對象中的方式構成更加複雜的結構。
· 適配器模式 (Adapter Pattern) - 適配器模式能夠將一個類的接口和另外一個類的接口匹配起來。
· 橋接模式 (Bridge Pattern) - 橋樑模式對客戶端程序提供一個固定的接口,可是容許開發人員變化實際的實現類。這樣開發人員就能夠將接口是具體的實現類分離開來。
· 組合模式 (Composite Pattern) - 複合模式能夠將多個對象進行復合,其中的每一個對象能夠是簡單對象,也能夠是複合對象。
· 代理模式 (Proxy Pattern) - 代理模式利用一個簡單的對象替代一個複雜的對象,當複雜對象在須要的時候纔會被加載到系統中,這樣能夠節約系統資源,提升系統的響應速度。在網絡環境中這種模式頗有用處。
· 裝飾模式 (Decorator Pattern) - 經過修飾模式,開發人員能夠在運行時將特定的功能綁定在對象上。
· 輕量模式 (Flyweight Pattern) - 輕量模式經過將對象中的一部分數據保存在對象外,在調用對象中的方法時再將這些數據傳回對象。這樣作能夠減小大量比較簡單的對象佔用的空間。
· 門面模式 (Facade Pattern) - 正面模式將複雜的類層次結構組織起來,經過一個簡單的接口來得到層次結構中的數據。
行爲類型的模式
行爲類型的模式主要是那些處理對象之間通信的模式,該類型的包括如下模式
觀察者模式 (Observer Pattern) - 觀測者模式能夠在發生變化時將變化通知多個類。
中介者模式 (Mediator Pattern) - 中介模式能夠經過一箇中間類來控制若干個類之間的通信,而且這些類相互之間不須要了解對方的信息。
訪問者模式 (Visitor Pattern) - 訪問者模式經過一個訪問類來訪問其餘類中的數據。
備忘錄模式 (Memento Pattern) - 回憶模式能夠在不破壞對象封裝性的前提下保存和恢復對象的內部狀態。
責任鏈模式 (Chain of Responsibility) - 職責鏈模式將請求傳遞給一組對象,只有特定的對象纔會處理該請求。這樣就進一步削弱類之間的聯繫。
命令模式 (Command Pattern) - 命令模式將請求傳遞給特定的對象,這樣客戶端即便在不知道服務器端如何處理請求的狀況下也能夠發送請求。
模板模式 (Template Pattern) - 模板模式提供了對算法的抽象定義。 策略模式 (Strategy Pattern) - 策略模式定義了一組算法,將每一個算法都封裝起來,而且使它們之間能夠互換。策略模式使這些算法在客戶端調用它們的時候可以互不影響地變化。 狀態模式 (State Pattern) - 狀態模式將一個類實例的變量保存在獨立的內存空間中。 迭代模式 (Iterator Pattern) - 迭代模式在不知道數據的內部表現形式的前提下,經過標準的接口來遍歷數據集合中的數據。 解釋器模式 (Interpreter Pattern) - 定義語言的文法,而且創建一個解釋器來解釋該語言中的句子.