Mega Code Archive

 
Categories / Java / Design Pattern
 

Singleton pattern in Java 1

/* The Design Patterns Java Companion Copyright (C) 1998, by James W. Cooper IBM Thomas J. Watson Research Center */ public class InstanceSpooler {   static public void main(String argv[]) {     Spooler pr1, pr2;     //open one printer--this should always work     System.out.println("Opening one spooler");     pr1 = Spooler.Instance();     if (pr1 != null)       System.out.println("got 1 spooler");     //try to open another printer --should fail     System.out.println("Opening two spoolers");     pr2 = Spooler.Instance();     if (pr2 == null)       System.out.println("no instance available");     //fails because constructor is privatized     //iSpooler pr3 = new iSpooler();   } } class Spooler {   //this is a prototype for a printer-spooler class   //such that only one instance can ever exist   static boolean instance_flag = false; //true if 1 instance   private Spooler() {   }   static public Spooler Instance() {     if (!instance_flag) {       instance_flag = true;       return new Spooler();     } else       return null;   }   public void finalize() {     instance_flag = false;   } }