天天看點

【Java】Java中的設計模式的介紹以及代碼詳解

一.什麼是設計模式?

設計模式是軟體開發人員在軟體開發過程中面臨的一般問題的解決方案。這些解決方案是衆多軟體開發人員經過相當長的一段時間的試驗和錯誤 總結出來的。 對問題行之有效地解決方式,是一種設計思想。java 中設計模式一般有23種

  建立型模式(5種):工廠方法模式,抽象工廠模式,單例模式,

    建造者模式,原型模式。

    結構型模式(7種):擴充卡模式,裝飾器模式,代理模式,外觀模式,

    橋接模式,組合模式,享元模式。

    行為型模式(11種):政策模式、模闆方法模式、觀察者模式、疊代子模式、

    責任鍊模式、指令模式、備忘錄模式、狀态模式、通路者模式、中介者模式、

    解釋器模式。

二.介紹幾種常用的模式以及案例的實作

1.單例設計模式:

    解決問題:保證一個類在記憶體中的對象是唯一的。

    如何保證對象的唯一性?

    1.不允許其他程式用new關鍵字來建立對象。                                        

    2.在該類中建立一個本類的執行個體。                                                

    3.定義一個公有的方法,讓其他程式可以擷取該對象。    

    單例模式作用:

  1.控制資源的使用,通過線程同步來控制資源的并發通路;

  2.控制執行個體産生的數量,達到節約資源的目的。

  3.作為通信媒介使用,也就是資料共享,它可以在不建立直接關聯的條

    件下,讓多個不相關的兩個線程或者程序之間實作通信。

  私有化構造方法。 通過new在本類中建立一個本類對象。 定義一個公有的方法,将建立的對象傳回。

餓漢式單例類與懶漢式單例類比較 

      餓漢式單例類在類被加載時就将自己執行個體化,它的優點在于無須考慮多線程 ,通路問題,可以確定執行個體的唯一性;從調用速度和反應時間角度來講,由于單例對象一開始就得以建立,是以要優于懶漢式單例。但是無論系統在運作時是否需要使用該單例對象,由于在類加載時該對象就需要建立,是以從資源利用效率角度來講,餓漢式單例不及懶漢式單例,而且在系統加載時由于需要建立餓漢式單例對象,加載時間可能會比較長。 

       懶漢式單例類在第一次使用時建立,無須一直占用系統資源,實作了延遲加 載,但是必須處理好多個線程同時通路的問題,特别是當單例類作為資源控制器,在執行個體化時必然涉及資源初始化,而資源初始化很有可能耗費大量時間,這意味着出現多線程同時首次引用此類的機率變得較大,需要通過雙重檢查鎖定等機制進行控制,這将導緻系統性能受到一定影響。

三.案例代碼

單例模式:

class SingleDemo{
    /*
    1 不允許其他程式用new關鍵字來建立對象。
    2 在該類中建立一個本類的執行個體。
    3 定義一個公有的方法,讓其他程式可以擷取該對象。
    */
    private SingleDemo(){}
    private static SingleDemo s = null;
    public static SingleDemo getS(){
        if(s == null){
            return new SingleDemo();
        }
        return s;
    }
}
public class SingleTest {
    public static void main(String[] args) {
        SingleDemo.getS();
    }
}
           

餓漢模式與懶漢模式:

class Single{
    //餓漢式,當類加載時,對象就加載了。   預設的
    private Single(){
    }
    private static Single s = new Single();
    public static Single getS() {
        return s;
    }
}
class Single2{
    //懶漢式:類加載進來時沒有對象,隻有調用了gets()時才會産生對象。
    private static Single2 s = null;
    private Single2(){
    }
    public static Single2 gets(){
        if(s == null){
            s = new Single2();
        }
        return s;
    }
}
public class Test {
    /*Single s = new Single();
    Single s1 = Single.getS();*/
}
           

以上就是關于Java的設計模式的基本介紹。