1、Factory 設計模式: the most common pattern,create a new object ,eg. A a=new A();工廠模式的好處:工廠模式能夠作到把建立對象單獨提出來,起到解耦做用,即:若是要修改建立對象的邏輯不用在項目裏的各處修改了,只須要在工廠裏面修改一處就能夠了,大大縮短了修改的工做量.java
此模式屬於建立型設計模式,它只定義建立對象的接口,而由它的子類負責建立具體的對象,利用子類實例化不一樣的對象。圖一是Factory Method 模式結構的類圖(Class Diagram),其中:數據庫
也就是說Creator依賴於ConcreteCreator建立Product型的ConcreteProduct對象。 Factory method使應用程序代碼只需處理Product接口,而與具體的類(ConcreteProduct)無關,加強了代碼可重用性,由於它獨立於用戶定義的具體的類。設計模式
小結 工廠模式的適用範圍
• 在編碼時不能預見須要建立哪種類的實例。
• 一個類使用它的子類來建立對象。
• 開發人員不但願建立了哪一個類的實例以及如何建立實例的信息暴露給外部程序。安全
2、Singleton 單例模式: let one class only has one instance, something like static parameter, can save memory,
beneficial to garbage collection Singleton 是一種建立性模型,它用來確保只產生一個實例,並提供一個訪問它的全局訪問點.對一些類來講,保證只有一個實例是很重要的,好比有的時候,數據庫鏈接或 Socket 鏈接要受到必定的限制,必須保持同一時間只能有一個鏈接的存在.再舉個例子,集合中的 set 中不能包含重複的元素,添加到set裏的對象必須是惟一的,若是重複的值添加到 set,它只接受一個實例.JDK中正式運用了Singleton模式來實現 set 的這一特性,你們能夠查看java.util.Collections裏的內部靜態類SingletonSet的原代碼.其實Singleton是最簡單但也是應用最普遍的模式之一,在 JDK 中隨處可見.多線程
爲了實現 Singleton 模式,咱們須要的是一個靜態的變量,可以在不建立對象的狀況下記憶是否已經產生過實例了.靜態變量或靜態方法均可以在不產生具體實例的狀況下直接調用,這樣的變量或方法不會由於類的實例化而有所改變.在圖1的結構中能夠看到,uniqueInstance 就是這個獨立的靜態變量,它能夠記憶對象是否已經實例化了,在靜態方法 Instance 中對這個變量進行判斷,若沒有實例化過就產生一個新的對象,若是已經實例化了則再也不產生新的對象,仍然返回之前產生的實例.編碼
小結spa
3、Prototype 原型模式:the same as clone()線程
一、定義:原型模式就是經過一個原型對象來代表要建立的對象類型,而後用複製這個對象的方法來建立更痛類型的對象。設計
二、原理:有兩部分組成,抽象原型和具體原型。代理
三、使用時機:系統須要 建立吃的對象是動態加載的,並且產品具備必定層次時,能夠考慮使用原型模式。
>當要實例化的類是在運行時刻指定時,例如,經過動態裝載;
>或者爲了不建立一個與產品類層次平行的工廠類層次時;
>或者當一個類的實例只能有幾個不一樣狀態組合中的一種時。
>創建相應數目的原型並克隆它們可能比每次用合適的狀態手工實例化該類更方便一些。
四、效果:
>能夠再運行時刻增長和刪除產品。
>能夠經過改變值來指定產品。
>能夠經過改變結構來指定新對象。
>減小子類的構造
>能夠用類動態配置應用。
五、實現:
>使用一個原型管理器
>實現克隆操做(淺拷貝和深拷貝)
>初始化克隆對象。
六、使用原型模式的意圖:用原型實例指定建立對象的種類,而且經過拷貝這些原型建立新的對象。
七、解決的問題:
好比有一個對象,在某一時刻該對象中已經包含了一些有效的值,此時可能會須要一個和該對象徹底相同的新對象,而且此後對新對象的任何改動都不會影響到原來對象中的值,也就是說新對象與原來的對象是兩個獨立的對象,但新對象的初始值是由原來的對象肯定的。
Clone:
賦值建立對象:
>java中賦值建立對象是能夠實現對象的重用的,可是新對象和原對象是同一個引用;若是修改其中的一個對象的值,則另外的一個對象也會發生改變。
>使用clone方法會返回對象的一個拷貝,這樣一來,若是修改一個對象的值,則另外的對象不會發生改變的。
4、Proxy 代理模式:一個類表明另外一個類的功能。這種類型的設計模式屬於結構型模式。
在代理模式中,咱們建立具備現有對象的對象,以便向外界提供功能接口。
3:真實代理對象.定義了代理角色所表明的具體對象.
還有就是受權機制,經過代理能攔截真實主題的能力,來控制真實主題的訪問權限.