Java單例模式和多例模式實(shí)例分析
本文實(shí)例講述了Java單例模式和多例模式。分享給大家供大家參考,具體如下:
一 單例模式
1 代碼
class Boss { private static Boss instance;// 靜態(tài)成員變量,用來保存唯一創(chuàng)建的對象實(shí)例 private Boss () { // 利用私有化構(gòu)造方法,阻止外部創(chuàng)建對象 } public static Boss findBoss() //檢查并確保只有一個(gè)實(shí)例 { if (instance == null) { System.out.println("當(dāng)前沒有老板,馬上指派一個(gè)!"); instance = new Boss(); } else { System.out.println("已經(jīng)有老板了!直接來匯報(bào)吧。"); } return instance; } } public class Singleton { public static void main(String[] args) { Boss boss1 = null; // 聲明對象boss1 Boss boss2 = null; // 聲明對象boss2 boss1 = Boss.findBoss();//實(shí)例化對象 boss2 = Boss.findBoss();//實(shí)例化對象 } }
2 運(yùn)行
當(dāng)前沒有老板,馬上指派一個(gè)!
已經(jīng)有老板了!直接來匯報(bào)吧。
二 多例模式
1 代碼
// 枚舉類 enum Sex { 男性, 女性 }; class sexClass { private String title; // 保存信息 private static final sexClass MALE = new sexClass("男"); private static final sexClass FEMALE = new sexClass("女"); private sexClass( String title ) //私有構(gòu)造方法 { this.title = "創(chuàng)造的對象性別為: " + title; System.out.println("構(gòu)造函數(shù)"+title); } public static sexClass getInstance( Sex sex )//static方法 { switch (sex) { case 男性: return MALE; case 女性: return FEMALE; default: return null; } } @Override public String toString() { return this.title; } } public class TestMultiton { public static void main( String args[] ) { System.out.println(sexClass.getInstance(Sex.男性)); // 如果把這句也注釋上,則輸出結(jié)果為空,體現(xiàn)出賴加載(用時(shí)才加載該類) //System.out.println(sexClass.getInstance(Sex.女性)); } }
2 運(yùn)行
構(gòu)造函數(shù)男
構(gòu)造函數(shù)女
創(chuàng)造的對象性別為: 男
3 說明
多例設(shè)計(jì)模式,實(shí)際就是“單例設(shè)計(jì)模式”的擴(kuò)展版。設(shè)計(jì)思想和實(shí)現(xiàn)步驟都非常類似。
更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java面向?qū)ο蟪绦蛟O(shè)計(jì)入門與進(jìn)階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對大家java程序設(shè)計(jì)有所幫助。
相關(guān)文章
Maven項(xiàng)目引用第三方j(luò)ar包找不到類ClassNotFoundException
這篇文章主要為大家介紹了Maven項(xiàng)目引用第三方j(luò)ar包找不到類ClassNotFoundException解決及原因分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07java 反射getClass .class 的使用方法示例
這篇文章主要介紹了java 反射getClass .class 的使用方法,結(jié)合實(shí)例形式分析了java類反射機(jī)制的相關(guān)操作技巧,需要的朋友可以參考下2019-11-11MyBatis-Plus結(jié)合Layui實(shí)現(xiàn)分頁方法
MyBatis-Plus 使用簡單,本文主要介紹使用 service 中的 page 方法結(jié)合 Layui 前端框架實(shí)現(xiàn)分頁效果,具有一定的參考價(jià)值,感興趣的可以了解一下2021-08-08SpringBoot基于redis自定義注解實(shí)現(xiàn)后端接口防重復(fù)提交校驗(yàn)
本文主要介紹了SpringBoot基于redis自定義注解實(shí)現(xiàn)后端接口防重復(fù)提交校驗(yàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01Mac?Maven環(huán)境搭建安裝和配置超詳細(xì)步驟
這篇文章主要給大家介紹了關(guān)于Mac?Maven環(huán)境搭建安裝和配置的超詳細(xì)步驟,Maven是一種常用的Java構(gòu)建工具,它可以自動(dòng)化構(gòu)建、測試和打包Java項(xiàng)目,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10