我工作的那點事--學習《設計模式》例項應用(Singleton模式)

biqing0427發表於2007-11-26
公司為了節約資源,對於印表機用了Singleton模式,反正所有的檔案列印只能在一臺機器上。[@more@]今天早上開會,要列印一堆檔案(先列印出來 然後再影印(Memento)),整個公司就一個印表機,由於前面有位同事也在列印東西,沒有辦法只好等他用完了,心裡那個急啊,公司怎麼不多配幾臺印表機呢?

公司為了節約資源,對於印表機用了Singleton模式,反正所有的檔案列印只能在一臺機器上。

對於Singleton的定義如下:
主要為了在整個java工程呼叫中只用到一個例項,這樣節約了記憶體的消耗(只有一臺印表機),如果同時使用,只有等待。但是可以避免啟用多個例項,消耗不必要的資源。

public class Printer{

  private Printer(){}

  private static Printer instance = new Printer();

  //這裡提供了一個外部呼叫印表機的方法  
  public static PrintergetInstance() {
    return instance;   
   }
}

這裡是將列印先開下來,然後你可以直接呼叫。

但是這樣好像有點浪費哦,你想想印表機一直開著多浪費,還不如有人用時再開啟呢,看看多節約。

public class Printer{

  private Printer(){}

  private static Printer instance = null;

  //這裡提供了一個外部呼叫印表機的方法  
  public static Printer getInstance() {
if(instance==null)//檢查一下 是否開了。
instance = new Printer();
 return instance;   
   }
}


為了防止同步時的情況,大家可以查考 http://www-106.ibm.com/developerworks/java/library/j-dcl.html?dwzone=java

public class Printer{
  private Printer(){}
  private static Printer instance = null;

  //這裡提供了一個外部呼叫印表機的方法  
  public static synchronized Printer getInstance() {
if(instance==null)//檢查一下 是否開了。
instance = new Printer();
 return instance;   
   }
}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9879276/viewspace-984940/,如需轉載,請註明出處,否則將追究法律責任。

相關文章