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-07
java 反射getClass .class 的使用方法示例
這篇文章主要介紹了java 反射getClass .class 的使用方法,結(jié)合實(shí)例形式分析了java類反射機(jī)制的相關(guān)操作技巧,需要的朋友可以參考下2019-11-11
MyBatis-Plus結(jié)合Layui實(shí)現(xiàn)分頁方法
MyBatis-Plus 使用簡單,本文主要介紹使用 service 中的 page 方法結(jié)合 Layui 前端框架實(shí)現(xiàn)分頁效果,具有一定的參考價(jià)值,感興趣的可以了解一下2021-08-08
SpringBoot基于redis自定義注解實(shí)現(xiàn)后端接口防重復(fù)提交校驗(yàn)
本文主要介紹了SpringBoot基于redis自定義注解實(shí)現(xiàn)后端接口防重復(fù)提交校驗(yàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
Mac?Maven環(huán)境搭建安裝和配置超詳細(xì)步驟
這篇文章主要給大家介紹了關(guān)于Mac?Maven環(huán)境搭建安裝和配置的超詳細(xì)步驟,Maven是一種常用的Java構(gòu)建工具,它可以自動化構(gòu)建、測試和打包Java項(xiàng)目,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10

