日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java设计模式——单件模式

發布時間:2025/3/20 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java设计模式——单件模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

概述

? 有一些對象其實我們只需要一個,比方說:線程池(threadpool)、緩存(cache)、對話框、處理偏好設置和注冊表(registry)的對象、日志對象,充當打印機、顯卡等設備的驅動程序的對象。事實上,這類對象只能有一個實例,如果制造出多個對象,就會導致許多的問題產生,例如:程序的行為異常、資源使用過量,或者是不一致的結果。——《Head First設計模式》


使用環境

? 當我們的對象在邏輯上只能有一個的時候,比如說打印機。想像一下,如果我們有兩個指向同一臺打印機的對象,這時我們應該去響應哪個對象的請求呢?顯然我們只能有一個打印機的對象,且這個對象還要互斥地去訪問,否則上述問題依舊存在。


優點介紹

?1.可以在需要時才開始創建對象

?2.保證只有一對象被創建


思路分析

單件模式有兩個精髓:

?1.一個私有的構造器

?2.一個靜態的成員變量,用于保存類的對象


? 如果你沒有一個私有的構造器,那么我們完全可以不使用公開的getInstance()方法,而是直接使用類的構造器來實現;如果你沒有第一個靜態的成員變量來保存對象的對象,你就無法去保證此對象一直存在,這樣系統就會在適當的時候回收此對象。


因為上面兩點的約束,我們可以得到一個類似這樣的公開化的方法:

private static SingletonClass mSingletonClass = null;private SingletonClass() {}public static synchronized SingletonClass getInstance() {if (mSingletonClass == null) {mSingletonClass = new SingletonClass();}return mSingletonClass;}

上面的代碼中使用了關鍵字synchronized.這是為了在多線程中去互斥地訪問臨界資源而添加的。

但是你必須知道,同步一個方法可能造成程序執行效率下降100倍。所以在你的程序中,如果 getInstance()?頻繁使用,那么就可能需要重新設計你的代碼以提高效率了。


雙重檢查加鎖

? 上面說到 getInstance() 在多線程中的使用可能會有一些不盡如人意的地方。那么要怎么來作一個修改,使得程序更完善呢?利用雙重檢查加鎖可以達到我們的目的。首先檢查是否實例已經創建了,如果尚未創建,進行同步。這樣的處理,使得程序只會在第一次發生同步,這正是合乎要求的。實現如下:

public static SingletonDoubleChecked getInstance() {if (mDoubleChecked == null) {synchronized (SingletonDoubleChecked.class) {if (mDoubleChecked == null) {mDoubleChecked = new SingletonDoubleChecked();}}}return mDoubleChecked;}
注意:雙重檢查加鎖不適用于1.4之前的版本。


類圖展示



代碼展示

SingletonClass.java

public class SingletonClass {private static SingletonClass mSingletonClass = null;private SingletonClass() {}public static synchronized SingletonClass getInstance() {if (mSingletonClass == null) {mSingletonClass = new SingletonClass();}return mSingletonClass;}public void printLabel() {System.out.println("Singleton Class Label.");} }
SingletonDoubleChecked.java

public class SingletonDoubleChecked {private volatile static SingletonDoubleChecked mDoubleChecked = null;private SingletonDoubleChecked() {}public static SingletonDoubleChecked getInstance() {if (mDoubleChecked == null) {synchronized (SingletonDoubleChecked.class) {if (mDoubleChecked == null) {mDoubleChecked = new SingletonDoubleChecked();}}}return mDoubleChecked;}public void printLabel() {System.out.println("SingletonDoubleChecked Class Label.");} }
TestMain.java

public class TestMain {public static void main(String[] args) {SingletonClass singletonClass = SingletonClass.getInstance();singletonClass.printLabel();SingletonDoubleChecked doubleChecked = SingletonDoubleChecked.getInstance();doubleChecked.printLabel();} }

效果圖



Github 源碼下載

https://github.com/William-Hai/DesignPatternCollections

總結

以上是生活随笔為你收集整理的Java设计模式——单件模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩亚洲国产欧美 | 久久久久99精品国产片 | 狠狠干天天操 | 中文字幕一区在线播放 | 精品人妻一区二区三区四区 | 中文字幕亚洲精品 | 香蕉国产在线 | 亚洲精品国产精品国自产网站按摩 | 国产黑丝在线 | 爱久久视频| 亚洲成人第一页 | 亚洲国产一区二区在线观看 | 日韩精品一区二区三区国语自制 | 91噜噜噜| 亚洲性事| 国产亚洲精品久久久久久777 | 色爱视频| 日韩一区视频在线 | 人操人爽 | www.久久综合 | 森林影视官网在线观看 | 亚洲高清在线视频 | 夜夜草天天草 | 成人3d动漫一区二区三区91 | 日韩大尺度在线观看 | 成人女同av免费观看 | 日韩色图视频 | 西西人体做爰大胆gogo | 欧美日韩国产一区二区在线观看 | 日韩操 | av色网站| 亚洲精品66 | 九草在线视频 | 黄色大片网站在线观看 | 欧美一级在线免费 | 一区二区国产视频 | 香港台湾日本三级大全 | 97精品视频在线观看 | 五十路中文字幕 | 大奶一区 | 日本人妻丰满熟妇久久久久久 | 日本乱论视频 | 亚洲免费观看高清完整 | 久久久亚洲欧美 | 人妻熟人中文字幕一区二区 | 黄色工厂在线观看 | 伊人久操 | 中文字幕人妻丝袜二区 | 国产精品第3页 | 开心激情网五月天 | 免费日本黄色网址 | 手机在线看片你懂的 | 老司机深夜网站 | 日韩在线精品强乱中文字幕 | 真实偷拍激情啪啪对白 | 肉嫁高柳家在线看 | 国产片91 | 婷婷色婷婷开心五月四房播播 | 亚洲视频2| 亚洲丁香花色 | 国产精品69毛片高清亚洲 | 91香蕉嫩草| 无码人妻一区二区三区av | 69久久成人精品 | 国产精品mm | 日本天堂网 | 先锋资源一区 | 亚洲欧洲日韩 | 国产欧美一区二区三区鸳鸯浴 | 午夜免费福利小电影 | 欧美日韩123区 | 福利一区二区 | 99国产揄拍国产精品 | 91精产品一区观看 | 中文字幕乱码在线观看 | 成人免费a视频 | 欧美一区亚洲 | 久久精品久久精品久久 | 亚洲av无码一区二区三区四区 | 好吊妞操 | 爱逼综合 | 年下总裁被打光屁股sp | 操碰人人 | 欧美激情一区二区三区p站 欧美mv日韩mv国产网站app | 五月天中文字幕av | 日本黄色免费看 | 午夜中文字幕 | 欧美激情片一区二区 | 好看的中文字幕电影 | 久久免费高清视频 | 抖音视频在线观看 | 秋霞电影网一区二区 | 手机av在线不卡 | 美女扒开腿让男人操 | 成人无遮挡 | 午夜免费福利网站 | 黄色一级一片 | 日韩欧美一区二区三区在线观看 | 欧美综合自拍 |