单例模式:Instance
生活随笔
收集整理的這篇文章主要介紹了
单例模式:Instance
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
前言:
學(xué)習(xí)面向?qū)ο蟪绦蛟O(shè)計的朋友應(yīng)該知道,我們大多數(shù)情況下通過 new 操作來實例化對象的。對于一些僅需要一次初始化的對象來說,頻繁的new操作無疑會過多浪費內(nèi)存空間。基于此,單例模式便應(yīng)運而生了。所謂單例,即"一次初始化,多次操作"。那么本文就介紹一下自己封裝一個支持單例的類的主要步驟。
實現(xiàn)單例的3個要點:
·靜態(tài)化實例;
·將構(gòu)造方法封裝為private;
·對外提供一個公開的getInstance()方法。
代碼實現(xiàn):
package com.modelDesign.instance;public class Person {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}private Person(){}private static Person pp=new Person();public static Person getInstance(){return pp;}}客戶端測試程序:
package com.modelDesign.instance;public class TestPerson {public static void main(String[] args) {Person p1 = Person.getInstance();p1.setName("Jack");Person p2 = Person.getInstance();System.out.println("是否單例:"+(p1==p2));System.out.println(p2.getName());} }?
測試結(jié)果:
補充:
當(dāng)你設(shè)計的應(yīng)用涉及到多線程時,上面的代碼還是有瑕疵的。由于線程與線程之間的沖突,很可能會造成多次初始化。由此,我們引入多線程的鎖——Lock加以解決。
適應(yīng)多線程的單例實現(xiàn):
注意:測試類不要包含在單例類中,因為同一個類中私有的構(gòu)造方法同樣可以被其他方法調(diào)用,也就是說在main()函數(shù)進行new操作時不會報錯!!
轉(zhuǎn)載于:https://www.cnblogs.com/SeaSky0606/p/4719087.html
總結(jié)
以上是生活随笔為你收集整理的单例模式:Instance的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OC语言内存管理
- 下一篇: 升级MAC OX上的Python到3.4