奶头挺立呻吟高潮av全片,成人试看120秒体验区,性欧美极品v,A片高潮抽搐揉捏奶头视频

java語言

JAVA設(shè)計模式之單例模式

時間:2024-07-29 12:04:16 java語言 我要投稿
  • 相關(guān)推薦

JAVA設(shè)計模式之單例模式

  1. 模式介紹

  模式的定義

  確保某一個類只有一個實例,而且自行實例化并向整個系統(tǒng)提供這個實例。

  模式的使用場景

  確保某個類有且只有一個對象的場景,例如創(chuàng)建一個對象需要消耗的資源過多,如要訪問 IO 和數(shù)據(jù)庫等資源。

  2. UML類圖

  角色介紹:

  (1)Client : 高層客戶端。

  (2)Singleton : 單例類。

  3. 模式的簡單實現(xiàn)

  public class Singleton { private static Singleton intance; private Singleton() {} public static Singleton getInstance() { /* * 一開始多線程進來,遇到鎖,一個線程進去,是為空,new對象; 后續(xù)線程進入,不為空,不操作;最后直接返回 * 對象不為空,再有多個線程進入該函數(shù),不為空,不執(zhí)行加鎖操作,直接返回 */ if (intance == null) { synchronized (Singleton.class) { if (intance == null) { intance = new Singleton(); } } } return intance; } } class Singleton1 {// 懶漢式 private static Singleton1 intance = new Singleton1();//懶的,程序運行的時候就加載出來了 private Singleton1() {} public static Singleton1 getInstance() { return intance; } } class Singleton2 {// 餓漢式 private static Singleton2 intance; private Singleton2() {} public static Singleton2 getInstance() {//用到的時候 才加載 if (intance == null) { intance = new Singleton2(); } return intance; } } class Singleton3 {// 餓漢式 線程安全 private static Singleton3 intance; private Singleton3() {} public synchronized static Singleton3 getInstance() {//用到的時候 才加載, 加鎖 多線程調(diào)用,都有一個加鎖的動作 if (intance == null) { intance = new Singleton3(); } return intance; } } class Singleton4 {// 餓漢式 線程安全 private static Singleton4 intance; private Singleton4() {} public static Singleton4 getInstance() {//用到的時候 才加載 synchronized (Singleton4.class) {// 加鎖 效率跟3差不多 if (intance == null) { intance = new Singleton4(); } } return intance; } }

  4.優(yōu)點與缺點

  (1)優(yōu)點:

  A.由于單例模式在內(nèi)存中只有一個實例,減少了內(nèi)存開支,特別是一個對象需要頻繁地創(chuàng)建、銷毀時,而且創(chuàng)建或銷毀時性能又無法優(yōu)化,單例模式的優(yōu)勢就非常明顯。

  B.由于單例模式只生成一個實例,所以減少了系統(tǒng)的性能開銷,當(dāng)一個對象的產(chǎn)生需要比較多的資源時,如讀取配置、產(chǎn)生其他依賴對象時,則可以通過在應(yīng)用啟動時直接產(chǎn)生一個單例對象,然后用永久駐留內(nèi)存的方式來解決;

  C.單例模式可以避免對資源的多重占用,例如一個寫文件動作,由于只有一個實例存在內(nèi)存中,避免對同一個資源文件的同時寫操作。

  D.單例模式可以在系統(tǒng)設(shè)置全局的訪問點,優(yōu)化和共享資源訪問,例如可以設(shè)計一個單例類,負責(zé)所有數(shù)據(jù)表的映射處理。

  (2)缺點

  A.單例模式一般沒有接口,擴展很困難,若要擴展,除了修改代碼基本上沒有第二種途徑可以實現(xiàn)。

【JAVA設(shè)計模式之單例模式】相關(guān)文章:

解析Java的設(shè)計模式編程之解釋器模式的運用05-19

簡單講解Java的Future編程模式方案09-30

教學(xué)設(shè)計模式的類型09-13

C語言編程中使用設(shè)計模式中的原型模式的講解07-19

交互設(shè)計的用戶行為模式詳解06-24

photoshop柔光模式和疊加模式的運用教程10-09

常見UI設(shè)計模式有哪幾種08-06

灰度色彩模式介紹10-11

京東商城的物流模式分析06-22

私募投資基金模式10-13

主站蜘蛛池模板: 饶河县| 泾川县| 汽车| 湟源县| 黑水县| 建阳市| 南投县| 南开区| 宁都县| 水城县| 台中市| 潜山县| 蕉岭县| 开原市| 二连浩特市| 房产| 宁河县| 萨迦县| 泾阳县| 东城区| 晋中市| 梅河口市| 诸城市| 光山县| 灵宝市| 淅川县| 汪清县| 周至县| 会理县| 雷州市| 高青县| 万荣县| 深水埗区| 湾仔区| 连州市| 晋江市| 柳林县| 榆林市| 泗水县| 和政县| 根河市|