Java單例模式和多例模式實(shí)例分析
本文實(shí)例講述了Java單例模式和多例模式。分享給大家供大家參考,具體如下:
一 單例模式
1 代碼
class Boss
{
private static Boss instance;// 靜態(tài)成員變量,用來(lái)保存唯一創(chuàng)建的對(duì)象實(shí)例
private Boss ()
{
// 利用私有化構(gòu)造方法,阻止外部創(chuàng)建對(duì)象
}
public static Boss findBoss() //檢查并確保只有一個(gè)實(shí)例
{
if (instance == null)
{
System.out.println("當(dāng)前沒(méi)有老板,馬上指派一個(gè)!");
instance = new Boss();
} else {
System.out.println("已經(jīng)有老板了!直接來(lái)匯報(bào)吧。");
}
return instance;
}
}
public class Singleton
{
public static void main(String[] args)
{
Boss boss1 = null; // 聲明對(duì)象boss1
Boss boss2 = null; // 聲明對(duì)象boss2
boss1 = Boss.findBoss();//實(shí)例化對(duì)象
boss2 = Boss.findBoss();//實(shí)例化對(duì)象
}
}
2 運(yùn)行
當(dāng)前沒(méi)有老板,馬上指派一個(gè)!
已經(jīng)有老板了!直接來(lái)匯報(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)造的對(duì)象性別為: " + 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)造的對(duì)象性別為: 男
3 說(shuō)明
多例設(shè)計(jì)模式,實(shí)際就是“單例設(shè)計(jì)模式”的擴(kuò)展版。設(shè)計(jì)思想和實(shí)現(xiàn)步驟都非常類似。
更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)與進(jìn)階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
相關(guān)文章
MybatisPlus實(shí)現(xiàn)insertBatchSomeColumn進(jìn)行批量增加
本文主要介紹了MybatisPlus實(shí)現(xiàn)insertBatchSomeColumn進(jìn)行批量增加,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
解決MyBatis Mapper的XML文件SQL語(yǔ)句無(wú)法自動(dòng)提示問(wèn)題(親測(cè)有效)
這篇文章主要給大家介紹了如何解決MyBatis Mapper的XML文件SQL語(yǔ)句無(wú)法自動(dòng)提示的問(wèn)題,文中有詳細(xì)的原因分析,以及通過(guò)圖文介紹的解決方案,需要的朋友可以參考下2023-10-10
spring+hibernate 兩種整合方式配置文件的方法
本篇文章主要介紹了spring+hibernate 兩種整合方式配置文件的方法,主要有兩種方式 1、注解方式 2、xml方式實(shí)現(xiàn),有興趣的可以了解一下。2017-04-04
Java校驗(yàn)validate介紹和使用實(shí)例
這篇文章主要介紹了Java校驗(yàn)validate介紹和使用的相關(guān)資料,還介紹了如何使用@Valid和@Validated注解進(jìn)行聲明式校驗(yàn),以及如何處理復(fù)雜校驗(yàn)需求,通過(guò)自定義校驗(yàn)注解來(lái)實(shí)現(xiàn),需要的朋友可以參考下2025-01-01
使用Java在線生成pdf文檔的代碼實(shí)現(xiàn)
在實(shí)際的業(yè)務(wù)開(kāi)發(fā)的時(shí)候,研發(fā)人員往往會(huì)碰到很多這樣的一些場(chǎng)景,需要提供相關(guān)的電子憑證信息給用戶,熟悉這塊業(yè)務(wù)的童鞋,一定特別清楚,目前最常用的解決方案通過(guò)一些技術(shù)手段生成對(duì)應(yīng)的PDF文件,下面小編給大家詳細(xì)說(shuō)說(shuō)2025-04-04
Spring中@ConditionalOnProperty注解的作用詳解
這篇文章主要介紹了Spring中@ConditionalOnProperty注解的作用詳解,@ConditionalOnProperty注解主要是用來(lái)判斷配置文件中的內(nèi)容來(lái)決定配置類是否生效用的,如果條件不匹配,則配置類不生效,需要的朋友可以參考下2024-01-01

