設計模式總結

一、爲什麼用設計模式?

使用設計模式是爲了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。

代理模式可以請求打印日誌信息,工廠模式可以負責初始化一些,觀察者模式可以對事件的監聽,單例模式,一定會手寫單例

策略設計模式

二、設計模式分類

設計模式總共23種,分爲三類:

1.創建型:共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。

2.結構型:共七種:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。

3.行爲型:共十一種:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解釋器模式。

三、懶漢式和餓漢式

懶漢式:

package Singleton;
/*懶漢式單例模式
* */
class Single{
    private static Single single;
    public static Single getSingle(){

            if (single==null){
                synchronized (Single.class){
                single = new Single();
                }
            }
            return single ;


    }
    /*爲什麼在java中單例設計模式要私有化該類構造函數?
    因爲只有構造函數私有化了,纔不能用new方法來創建對象,new創建對象時創建的是構造函數,如果可以用new方法就可以創建多個實例了,就不是單例模式了
    * */
    private Single(){

    }
}
public class SingletonTest {
    public static void main(String[] args) {
      //  Single single = new Single();
        Single single1 = Single.getSingle();
        Single single2 = Single.getSingle();
     //   System.out.println(single==single1);
        System.out.println(single1==single2);

    }
}

餓漢式:

package Singleton;
/*餓漢試單例模式
* */
class Single2{
    private Single2(){

    }
    private static final Single2 single2=new Single2();

    public static Single2 getSingle(){
        return single2;
    }
}
public class SingleTest2 {
    public static void main(String[] args) {
        Single2 single1 = Single2.getSingle();
        Single2 single2 = Single2.getSingle();
        System.out.println(single1==single2);
    }
}

懶漢式和餓漢試比較有哪些優缺點:

懶漢式節約內存,但是線程不安全,需要使用synchornized,運行效率低。餓漢式天生線程安全,執行效率高。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章