簡單工廠模式:spa
建立一個工廠類, Factory ,Factory內部有create方法,根據外部產生相應的實現類實體,返回的實體通常都繼承了抽象類或實現了接口,create方法也就是返回的是這個抽象和實現,客戶端就能使用這些實體使用接口類中的方法 ,還能夠添加相應的實現類這樣就能夠體現出對擴展開放,對修改關閉,工程模式也體現了單一職責,由於每一個實現類實體,就單獨實現了一個功能,能影響到它的就一個因素,外部實現的方法,還有依賴倒轉(使用的地方還挺多的)代理
策略模式:對象
跟工廠模式的區別是,工廠模式須要知道接口類,而策略模式則不用,比較適用於那些接口類中定義了不少對實體不相干的方法,須要屏蔽掉一些使用方法繼承
單一職責:接口
外部只有一個因素能夠影響到這個類的行爲(這個我平時要注意應用)原型
開放封閉原則:string
對擴展開放,對修改封閉(這個我平時要注意應用)it
依賴倒轉原則:模板
上層不直接依賴下層,他們都直接依賴抽象層,抽象不依賴實現,實現依賴抽象class
代理模式:
一個類A原來是直接訪問類B的,如今經過代理模式,生成了類B的代理類 ProxyB ,類B和代理類ProxyB 通常都繼承或者實現某些接口和實現類 ,ProxyB持有了類B的實例,這樣就能夠在調用B類以前,作一些攔截或者校驗處理
工廠方法模式:
和簡單工廠模式最大的區別是選擇使用什麼工廠實現類交給了上層進行處理,基本沒有見過有相似的使用方法,應該不太經常使用
原型模式:
原型模式主要核心思想是深拷貝和淺拷貝的問題,用原來的實例建立指定對象的種類,並經過拷貝這些原型建立新的對象(string 是一種擁有值類型特色的特殊引用類型)
模板方法:
提煉公共代碼,減小重複定義(平時常常回用到)
外觀模式:
分層概念,兩個不相同的層,須要創建外觀,Facade 知道哪些子系統負責處理請求,將客戶的請求代理給適當的子系統,和代理模式不同的是代理模式是一對一的,而外觀模式是一對多的
觀察者模式:
就是多個或者一個類B想知道另一個類A的狀態是否發生改變,這時候能夠經過在類A中註冊監聽,通常是類B實現一個接口,將此接口傳入A中,A發生改變後,遍歷此監聽的列表