java 從構造方法私有化引出單例模式

2021-07-31 14:07:31 字數 1287 閱讀 1833

問題的引出

當對乙個類的構造方法進行私有化以後,我們不能以new的形式新建乙個物件,去呼叫物件的方法。如下:

class singleton

public

void

print()

}

這個時候我們呼叫print()方法,需要如下:

@test

public

void

test()

程式編譯的時候會報錯。

**解決辦法

既然我們不能再外部去例項化乙個物件,那麼在類內部例項化呢。

class singleton

public

void

print()

}

程式編譯通過。但是測試方法扔不可執行,也就是說此時是重點在於如何將內部的singleton物件傳遞到類的外部去。前面說過,由static標註的屬性可以由類直接訪問,那麼上面的類改造一下:

class singleton

public

void

print()

}

@test

public

void

test()

run result:

hello world

但是這樣做本身也存在問題,因為我們知道類中的屬性一般情況下需要封裝。而屬性封裝之後,必須通過方法來獲取屬性,那麼這個方法也必須宣告為static方法。

問題解決

於是類將變成如下:

class singleton

public

static singleton getinstance()

public

void

print()

}

test:

@test

public

void

test()

result:

hello world

hello world

hello world

因為所有的類共享static屬性,雖然以上我們例項化了三個物件,但是他們都是指向同乙個引用。也就是說不管外面如何使用,最終結果也只有乙個例項化物件存在。這種模式在設計模式中被稱為單例模式。

構造方法私有化

本章目標 了解構造方法私有化的目的 掌握單態設計模式 構造方法私有化 類的封裝性不光體現在對屬性的封裝上,實際上方法也是可以被封裝的,當然,在方法封裝中也包含了對構造方法的封裝。例如 以下的 就是對構造方法進行了封裝。class singleton public void print 程式的意義 單...

Java 構造方法私有化與單例模式

先看乙個程式 class singleton public class test 上面的singleton類裡是存在構造方法的 如果乙個類中沒有明確的定義乙個構造方法的話,會自動生成乙個無參預設的構造方法 現在把構造方法修改一下 class singleton 構造方法私有化 public void...

Java 構造方法私有化的作用

public class demo08 class demo public void print 此時,無法例項化物件,無法例項化物件就無法呼叫print方法。public class demo08 class demo public static demo getinstance public v...