笔记:Java中的单例设计模式
????????之前接觸過單例模式,當初不明白這樣的設計用意,今天特地研究了下java中的單例設計模式的用處及用法。
????????單例模式:單例模式是一種常用的軟件設計模式。在它的核心結構中只包含一個被稱為單例類的特殊類。一個類有且僅有一個實例,并且自行實例化向整個系統提供。
????????單例模式的用處:一個系統中可以存在多個打印任務,但是只能有一個正在工作的任務;一個系統只能有一個窗口管理器或文件系統;一個系統只能有一個計時工具或ID(序號)生成器。如在Windows中就只能打開一個任務管理器。如果不使用機制對窗口對象進行唯一化,將彈出多個窗口,如果這些窗口顯示的內容完全一致,則是重復對象,浪費內存資源;如果這些窗口顯示的內容不一致,則意味著在某一瞬間系統有多個狀態,與實際不符,也會給用戶帶來誤解,不知道哪一個才是真實的狀態。因此有時確保系統中某個對象的唯一性即一個類只能有一個實例非常重要。http://baike.baidu.com/view/1859857.htm
????例子代碼如下:
????????
????????????????public class TestSingleMode {
?????????????????????????public static void main(String[] args) {
??
??? ????????????????????Singleton s1 = null ;//創建對象s1
??? ????????????????????Singleton s2 = null ;//創建對象s2
??????????????????????? s1 = Singleton.getInstance() ;//把類中的實例化對象傳遞給s1
??????????????????????? s1.print() ; //調用print方法打印輸出
??????????????????????? s2 = Singleton.getInstance() ;//把類中的實例化對象傳遞給s2
??????????????????????? s2.print() ; //調用print方法打印輸出
???
??????????????????????? s2.setName("jack");
??????????????????????? s2.setAge(2);
???
??????????????????????? s1.print();
?????????????????????????}
????????????????}
????????????????class Singleton ?{//定義Singleton類
?????????????????//在類的內部用靜態實例化對象并私有化
?????????????????????private static Singleton instance = new Singleton() ;
?????????????????//用靜態方式定義getter方法取回instance對象
?????????????????????public static Singleton getInstance(){
??????????????????????????return instance ;
?????????????????????}
?????????????????????private String name ; //定義name屬性
?????????????????????private int age ;? //定義age屬性
?????????????????????private Singleton(){} //無參構造 并私有化
?????????????????????public void setName(String name){ //setter方法
??????????????????????????this.name = name ;
?????????????????????}????
?????????????????????public String getName(){ //getter方法
??????????????????????????return this.name ;
?????????????????????}
?????????????????????public void setAge(int age){//setter方法
??????????????????????????this.age = age ;
?????????????????????}
?????????????????????public int getAge(){ //getter方法
??????????????????????????return this.age ;
?????????????????????}
?????????????????????public void print(){ //定義一個打印輸出的方法
??????????????????????????System.out.println("姓名:" + getName() + "年齡:" + getAge()) ;
?????????????????????}
????????????????}
????????????運行結果:
????????????????????姓名:null年齡:0
????????????????????姓名:null年齡:0
????????????????????姓名:jack年齡:2
????????????總結:s1 與 s2 指向同一對象,當修改s2的值時,s1的值也會改變。
?
轉載于:https://blog.51cto.com/kingstar/1531703
總結
以上是生活随笔為你收集整理的笔记:Java中的单例设计模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows Server 2012
- 下一篇: 从几个sample来学习Java堆,方法