當(dāng)前位置:首頁 > IT技術(shù) > 其他 > 正文

第六章 面向?qū)ο螅ㄏ拢?1.2 - 單例模式
2022-05-29 22:44:54

1.設(shè)計(jì)模式的說明:
1.1理解:

設(shè)計(jì)模式:是在大量的實(shí)踐中總結(jié)和理論化之后,優(yōu)化的代碼結(jié)構(gòu)、編程風(fēng)格、以及解決問題的思考方式。

1.2 常用設(shè)計(jì)模式 ---- 23種經(jīng)典的設(shè)計(jì)模式 GOF

創(chuàng)建型模式,共5種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。
結(jié)構(gòu)模型,共7種:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。
行為型模式,共11種:策略模式、模板方法模式、觀察者模式、迭代器模式、責(zé)任鏈模式、命令模式、備忘錄模式、狀態(tài)模式、訪問者模式、中介者模式、解釋器模式。

2.單例模式:
2.1 要解決的問題:

所謂類的單例設(shè)計(jì)模式,就是采用了一定的方法保證在整個的軟件系統(tǒng)中,對某個類只能存在一個對象實(shí)例。

2.2具體代碼的實(shí)現(xiàn):
餓漢式1:

class Bank{
  //1.私有化類的構(gòu)造器
  private Bank(){}
  
  //2.創(chuàng)建內(nèi)部類的對象
  //4.要求此對象也必須聲明為靜態(tài)的
  private static Bank instance = new Bank();

  //3.提供公共的靜態(tài)的方法,返回類的對象
  public static Bank getInstance(){
    return instance;
  }

}

餓漢式2:使用了靜態(tài)代碼塊

class Order {
  //1.私有化類的構(gòu)造器
  private Order(){}
  
  //2.聲明當(dāng)前類的對象,沒有初始化
  //4.此對象也必須聲明為static的
  private static Order instance = null;
  
  static{
    instance = new Order();
  }

  //3.聲明public static的返回當(dāng)前類對象的方法
  public static Order getInstance(){
    return instance;
  }

}


懶漢式:

class Order{
  //1.私有化類的構(gòu)造器
  private Order(){}

  //2.聲明當(dāng)前類對象,沒有初始化
  //4.此對象也必須聲明為static的
  public static Order instance = null;
  
  //3.聲明public、static的返回當(dāng)前類對象的方法
  public static Order getInstance(){
    if(instance == null){
      instance = new Order();
    }

    return instance;
  }


}

2.3兩種方法的對比:

餓漢式:
壞處:對象加載時間過長
好處:餓漢式是線程安全的

懶漢式:
好處:延遲對象的創(chuàng)建。
目前的壞處:線程不安全。----> 到多線程內(nèi)容時,在修改。

本文摘自 :https://www.cnblogs.com/

開通會員,享受整站包年服務(wù)立即開通 >