1. 程式人生 > >Java設計模式之單例模式之登記式單例

Java設計模式之單例模式之登記式單例

package 建立型_單例模式_登記式;

import java.util.HashMap;
import java.util.Map;

/**
 * 登記式單例實際上維護的是一組單例類的例項,將這些例項儲存到一個Map(登記簿)
 * 中,對於已經登記過的單例,則從工廠直接返回,對於沒有登記的,則先登記,而後
 * 返回
 * @author pp
 *
 */
public class RegSingleton {
    /**
     * 登記簿,用來存放所有登記的例項
     */
    private static Map<String, RegSingleton> map = new HashMap<String, RegSingleton>();
    //在類載入時新增一個例項到登記簿
    static{
        RegSingleton singleton = new RegSingleton();
        map.put(singleton.getClass().getName(), singleton);//運用了反射
    }
    /**
     * 受保護的預設構造方法
     */
    protected RegSingleton() {
        
    }
    /**
     * 靜態工廠方法,返回指定登記物件的唯一例項
     * 對於已經登記的直接取出返回,對於還未登記的先登記,然後取出返回
     *
     */
    public static RegSingleton getInstance(String name){
        if(name==null){
            name="RegSingleton";
        }
        if(map.get(name)==null){
            try {
                map.put(name, (RegSingleton) Class.forName(name).newInstance());
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return map.get(name);
    }
    
    /**
     * 一個示意性的商業方法
     */
    public String about(){
        return "Hello,I am RegSingleton";
    }
}



相關推薦

Java設計模式模式登記

package 建立型_單例模式_登記式; import java.util.HashMap; import java.util.Map; /** * 登記式單例實際上維護的是一組單例類的例項,將這些例項儲存到一個Map(登記簿) * 中,對於已經登記過的單例,則從

執行緒安全的登記

有的時候,我們不希望在一開始的時候就把一個類寫成單例模式,但是在運用的時候,我們卻可以像單例一樣使用他 最典型的例子就是spring,他的預設型別就是單例,spring是如何做到把不是單例的類變成單例呢? 這就用到了登記式單例 其實登記式單例並沒有去改變類

JAVA設計模式模式(轉)

單例對象 日誌 locking anti 常見 基本上 title 加載 懶漢式 本文繼續介紹23種設計模式系列之單例模式。 概念:  java中單例模式是一種常見的設計模式,單例模式的寫法有好幾種,這裏主要介紹三種:懶漢式單例、餓漢式單例、登記式單例。  單例模式有以下特

Java設計模式模式

設計 return 線程安全 -s ron none 方法 有一個 ava   一、前言:   轉載需要註明出處: https://i.cnblogs.com/EditPosts.aspx?opt=1   單例模式其實很早之前就已經接觸過了,但都是為了應付面試或者是為了裝X

Java設計模式模式》及應用場景

urn vol 運行 www 同步問題 href 外部 占用 模式 轉載參考:http://www.cnblogs.com/V1haoge/p/6510196.html 所謂單例,指的就是單實例,有且僅有一個類實例,這個單例不應該由人來控制,而應該由代碼來限制,強制單例。

Java設計模式模式(七種寫法)

不一定 java設計 font method 防止 turn 無法 lazy 三種 Java設計模式之單例模式(七種寫法) 第一種,懶漢式,lazy初始化,線程不安全,多線程中無法工作: public class Singleton { private stati

Java設計模式透析 —— (Singleton)

too 不能 占用內存 有道 機會 title bugs 功能 就是 轉載請註明出處:http://blog.csdn.net/guolin_blog/article/details/8860649 寫軟件的時候經常需要用到打印日誌功能,可以幫助你調試和定位問題,項目上

JAVA設計模式設計模式

java 過程 clas color singleton 設計模式 pre sta 靜態方法 單例模式,是一種常用的軟件設計模式。在它的核心結構中只包含一個被稱為單例的特殊類。通過單例模式可以保證系統中,應用該模式的類一個類只有一個實例。即一個類只有一個對象

Java設計模式(三)建立型模式模式

一、概念: java中單例模式是一種常見的設計模式,單例模式的寫法有好幾種,這裡主要介紹三種:懶漢式單例、餓漢式單例、登記式單例。 單例模式有以下特點: (1)單例類只能有一個例項; (2)單例類必須自己建立自己的唯一例項; (3)單例類必須給所有其他物件提供這一例項。 單例

設計模式模式(Java實現版)

單例模式作用在一個類上,這個類提供了一種方法來訪問它的唯一物件,可以直接訪問,而不需要例項化類的物件。單例模式的作用是保證一個類只有一個物件例項。 class Singleton { private static Singleton instance = new Singleton()

Java小白如何初步掌握java設計模式模式

單例設計模式(Singleton Pattern)是最簡單且常見的設計模式之一,主要作用是提供一個全域性訪問且只例項化一次的物件,避免多例項物件的情況下引起邏輯性錯誤(例項化數量可控)… 概述 Java中,單例模式主要分三種:懶漢式單例、餓漢式單例、登記式單例三種。 特點

Java設計模式模式(SingleInstance)

模式定義 需求背景 具體實現 模式定義 單例:保證一個類僅有一個例項,並提供一個訪問它的全域性訪問點。 需求背景 在App程序中保證類的例項唯一性,例如資料庫訪問入口等。

java高階設計模式模式

一、定義 保證一個類僅有一個例項,並提供一個訪問它的全域性訪問點。 二、結構和說明  三、基本實現 四、認識單例模式    1、單例模式的功能         單例模式的功能是用來保證這個

設計模式(建立型):Java常用23種設計模式模式詳解以及Java程式碼實現

可以說單例模式是所有設計模式中最簡單的一種。 單例模式就是說系統中對於某類的只能有一個物件,不可能出來第二個。 單例模式也是23中設計模式中在面試時少數幾個會要求寫程式碼的模式之一。主要考察的是多執行緒下面單例模式的執行緒安全性問題。 1.多執行緒安全單例模式例項一(不使用同步鎖)

java中的設計模式模式、工廠模式

Java中的設計模式            轉載地址:https://www.toutiao.com/i6573486403282272775/ 為什麼要學習設計模式 1)設計模式都是一些相對優秀的解決方案,很多問題都是典型的

java 設計模式模式 一篇就夠了

單例模式 單例物件(Singleton)是一種常用的設計模式。 在Java應用中,單例物件能保證在一個JVM中,該物件只有一個例項存在。這樣的模式有幾個好處: 1、某些類建立比較頻繁,對於一些大型的

Java設計模式模式(Singleton)

單例模式(Singleton Pattern)是 Java 中最簡單的設計模式之一。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。 這種模式涉及到一個單一的類,該類負責建立自己的物件,同時確保只有單個物件被建立。這個類提供了一種訪問其唯一的物件的方式,可

Java設計模式Singleton——四種不同的模式(Singleton)

單例模式(Singleton [?sglt?n]) 如果要保證系統裡最多隻能存在一個例項時,我們就需要單例模式。例如快取池、資料庫連線池等。 例項一:最簡單的單例模式 因為JVM在載入類時,對於static屬性的初始化只能由一個執行緒執行且僅執行一次,並且return操

java程式設計師面試必備:Java 設計模式模式

有些時候,我們想要一個類在整個系統中僅存在一個例項。比如說,系統給我們提供了一個印表機硬體設施,但是我們在系統中多次new 印表機,創建出多個印表機的例項去完成列印任務,那麼這個時候就會出現資源衝突現象,這就要求我們必須想一個辦法,去確保系統中存在唯一的一個印表機例項,解決方

淺析Java中的23種設計模式----模式

單例模式作為23種設計模式之一,有著它特定的需求場景,比如一些內部資料結構不需要發生變化的例項(一些工具類)。 單例模式的核心就是隻允許有一個該類的靜態例項,並且這個靜態例項必須由這個類自己對外提供,也就是說只能由這個類自己例項化自己。由於只允許這個類例項化自己,就意味著我