使用getInstance 方法的原因及作用

2021-06-30 16:15:27 字數 1493 閱讀 4346

先舉例說明:

下面是乙個例子,為什麼要把這個類例項化?有什麼好處?

//例項化

public static dbconnect instance;

public static dbconnect getinstance()

return instance; }

總的來說:這是單例模式,一般用於比較大,複雜的物件,只初始化一次,應該還有乙個private的建構函式,使得不能用new來例項化物件,只能呼叫getinstance方法來得到物件,而getinstance保證了每次呼叫都返回相同的物件。

詳細解釋一下:物件的例項化方法,也是比較多的,最常用的方法是直接使用new,而這是最普通的,如果要考慮到其它的需要,如單例項模式,層次間呼叫等等。

*直接使用new就不能實現好的設計,這時候需要使用間接使用new,即getinstance方法。這是乙個設計方式的代表,而不僅僅指代乙個方法名。

1. new的使用:

如object _object = new object(),這時候,就必須要知道有第二個object的存在,而第二個object也常常是在當前的應用程式域中的,

可以被直接呼叫的

2. getinstance的使用:

* 在主函式開始時呼叫,返回乙個例項化物件,此物件是static的,在記憶體中保留著它的引用,即記憶體中有一塊區域專門用來存放靜態方法和變數,

* 可以直接使用,呼叫多次返回同乙個物件。

3.兩者區別對照:

* 大部分類(非抽象類/介面/遮蔽了constructor的類)都可以用new,new就是通過生產乙個新的例項物件,或者在棧上宣告乙個物件 ,每部分的呼叫

* 用的都是乙個新的物件。

* getinstance是少部分類才有的乙個方法,各自的實現也不同。

* getinstance在單例模式(保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點)的類中常見,用來生成唯一的例項,getinstance往往是static的。

* * (1) 物件使用之前通過getinstance得到而不需要自己定義,用完之後不需要delete;

* (2)new 一定要生成乙個新物件,分配記憶體;getinstance() 則不一定要再次建立,它可以把乙個已存在的引用給你使用,這在效能上優於new;

* (3) new建立後只能當次使用,而getinstance()可以跨棧區域使用,或者遠端跨區域使用。所以getinstance()通常是建立static靜態例項方法的。

* * 總結:

*getinstance這個方法在單例模式用的甚多,為了避免對記憶體造成浪費,直到需要例項化該類的時候才將其實例化,所以用getinstance來獲取該物件,

* 至於其他時候,也就是為了簡便而已,為了不讓程式在例項化物件的時候,不用每次都用new關鍵字,索性提供乙個instance方法,不必一執行這個類就

* 初始化,這樣做到不浪費系統資源!單例模式 可以防止 資料的衝突,節省記憶體空間

以上是我對getinstance()方法的理解,希望能夠幫到你!謝謝你的閱讀!

使用getInstance 方法的原因及作用

先舉例說明 下面是乙個例子,為什麼要把這個類例項化?有什麼好處?例項化 public static dbconnect instance public static dbconnect getinstance return instance 總的來說 這是單例模式,一般用於比較大,複雜的物件,只初始...

使用getInstance 方法的原因及作用

使用getinstance 方法的原因及作用 先舉例說明 下面是乙個例子,為什麼要把這個類例項化?有什麼好處?例項化 public static dbconnect instance public static dbconnect getinstance if instance null insta...

使用getInstance 方法的原因及作用

先舉例說明 下面是乙個例子,為什麼要把這個類例項化?有什麼好處?例項化 public static dbconnect instance public static dbconnect getinstance if instance null instance new dbconnect retur...