1. 程式人生 > >單例例項化物件的引用

單例例項化物件的引用

首先,單例模式是物件的建立模式之一,此外還包括工廠模式。單例模式的三個特點:
1,該類只有一個例項
2,該類自行建立該例項(在該類內部建立自身的例項物件)
3,向整個系統公開這個例項介面

Java中大概是這個樣子

1 2 3 4 5 6 7 8 9 10 11 12 13 class Singleton { //私有,靜態的類自身例項 private static Singleton instance = new Singleton(); //私有的構造子(構造器,建構函式,構造方法) private Singleton(){} //公開,靜態的工廠方法
public static Singleton getInstance() { return instance; } }

使用時

1 Singleton obj = Singleton.getInstance();


這個單例類在自身被載入時instance會被例項化,即便載入器是靜態的。因此,對於資源密集,配置開銷較大的單體更合理的做法是將例項化(new)推遲到使用它的時候。即惰性載入(Lazy loading),它常用於那些必須載入大量資料的單體。修改下

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class LazySingleton { //初始為null,暫不例項化 private static LazySingleton instance = null; //私有的構造子(構造器,建構函式,構造方法) private LazySingleton(){} //公開,靜態的工廠方法,需要使用時才去建立該單體 public static LazySingleton getInstance() { if( instance == null ) { instance = new LazySingleton(); } return instance; }  
}

使用方式同上。

相關推薦

例項化物引用

首先,單例模式是物件的建立模式之一,此外還包括工廠模式。單例模式的三個特點: 1,該類只有一個例項 2,該類自行建立該例項(在該類內部建立自身的例項物件) 3,向整個系統公開這個例項介面 Java中大概是這個樣子 1 2 3 4 5 6 7 8 9

lua面向物件實現-類例項化物、繼承、多型、多繼承、lua模式

lua面向物件實現: 一個類就像是一個建立物件的模具。有些面嚮物件語言提供了類的概念,在這些語言中每個物件都是某個特定類的例項。lua則沒有類的概念,每個物件只能自定義行為和形態。不過,要在lua中模擬類也並不困難。 lua中,面向物件是用元表這個機制來實現。

追蹤類例項化物的個數

追蹤類例項化物件的個數 原始碼: package 跟蹤類的個數; import java.util.Scanner; class Test{ static int num=0; public static int Ci

父類宣告子類例項化物詳解

測試程式碼: public class Employee { public String name; public String getType(){ return "Employee"; } } public class Manager extends Employee{

Java例項化物過程中的記憶體分配

問題引入 這裡先定義一個很不標準的“書”類,這裡為了方便演示就不對類的屬性進行封裝了。 class Book{ String name; //書名 double price; //價格 public void getIn

js裡的面向物件分析-(建立例項化物) 建構函式

ECMAScript 有兩種開發模式:1.函式式(過程化),2.面向物件(OOP)。面向物件的語言有一個標誌,那就是類的概念,而通過類可以建立任意多個具有相同屬性和方法的物件。但是,ECMAScript 沒有類的概念,因此它的物件也與基於類的語言中的物件有所不同。 js本身

java例項化物的五種方式

1、用new語句建立物件,這是最常見的建立物件的方法。Student student = new Student();2、通過工廠方法返回物件,如:String str = String.valueOf(23); public interface Factory{Produc

Unity例項化物的公共方法

  大家好!我是小唐,最近寫了一個例項化物件的公共方法,方便以後用的時候直接呼叫此方法,可以多處使用,自己根據自己的需求寫的,不好還望多包含,一起學習一下吧。 using UnityEngine; using System.Collections; using Syste

spring整合mybatis時報空指標異常:service注入得不到Mapper介面的例項化物(已解決)

解決方法在下邊↓↓問題一:    mabite中Mapper介面的例項化物件找不到,顯示為NULL這是我的配置,還有執行時報的錯這幾個檔案都是使用反向工程生成的,應該沒有錯。執行結果顯示tUserMapper為null問題二:還有,使用ssm框架寫web工程的時候還出過這麼一

Java反射02 : Class物件獲取的三種方式和通過反射例項化物的兩種方式

1.Class物件獲取的三種方式 上一章節已經說過,一般情況下,Java反射操作都需要首先獲取Class物件。獲取Class物件的方式有三種。 公有屬性class 方法getClass()

什麼時候可以不用例項化物就可以呼叫類中成員函式

對於一個類A,對於這個定義((A*)0)或者 A *p = NULL 都可以呼叫類中的那些成員函式。         第一種情況:非靜態成員函式沒有使用類的非靜態資料成員,呼叫的其他非靜態成員函式也不

JAVA基礎-子類繼承父類例項化物過程

class Parent {     // 靜態變數     public static String p_StaticField = "父類--靜態變數";     // 變數(其實這用物件更好能體同這一點,如專門寫一個類的例項)        //如果這個變數放在初始化塊的後面,是會報錯的,因為你根本沒

java泛型的使用(二)在例項化物時不指定泛型,則自動識別為object

<span style="font-size:18px;">/** * *在定義類時,定義泛型 */ public class People <T>{ private

統計例項化物個數

class User{private  String name;private String password;private  static int count;public String getName(){return name;}public void setNa

C#例項化物的三種方式及效能對比

## 前言 做專案過程中有個需求要例項化兩萬個物件並新增到List中,這個過程大概需要1min才能載入完(傳參較多),於是開啟了程式碼優化之旅,再此記錄。 首先想到的是可能例項化比較耗時,於是開始對每種例項化方式進行測試,過程如下 ## 例項化方式 **1、用 New 關鍵字例項化一個類** **2、用 Ac

java軟設計模式——設計模式中的【餓漢式】與 【懶漢式】示例

nal pre turn new對象 構造方法 sta 餓漢式 () urn 以下為單例設計模式中的兩種經典模式的代碼示意: 1 單例設計模式(spring框架IOC,默認創建的對象都是單例的): 2 餓漢式: 3 public class Sing

模式不是一小事,快回來看看

use 需要 簡單的 ini blog system faq 依然 集中   上次寫了一篇《單例模式那件小事,看了你不會後悔》的文章,總結了常用的單例模式的實現。本文是上文的延續,單例模式絕不是一件小事,想弄清楚,真不是那麽簡單的。上文提到了常用的三種單例模式的實現方法:餓

引用對象代替模式

ace 這樣的 new 引入 -s 函數 span mov 減少 介紹: 系統中存在單例的全局訪問點,你希望將對單例的訪問通過對象引用來實現。往往是將對單例的依賴關系轉換為關聯關系。 動機: 在系統中引入單例模式往往並沒有起到明顯的效果卻添加了系統的復

python—89 自定義的admin後臺管理框架 1、啟動文 2、源碼(註冊功能、創建) 3、設計url

ready def str try pytho site 字典 style 啟動文件 admin後臺管理框架 仿照admin組件,開發stark組件 1、啟動文件   執行每一個app下的stark.py文件   重寫一個def ready() 函數  autodis

模式及搭建配置文

height style asstream prope ssp sources 控制 input man 單例模式    //讀取配置文件的工具類-單例模式 public class ConfigManager { private static Propertie