// Project: Patterns1 // Module: reusablesbjects // Source code file Reusable.java // Illustrate the Singleton software pattern. import java.util.ArrayList; public class Reusable { private int serialNum; private String description; private static int nextSerialNum = 1001; private static ArrayList reusables = new ArrayList( ); private Reusable(String theDescription) { description = theDescription; serialNum = nextSerialNum++; } public int getSerialNum() { return serialNum; } public String getDescription() { return description; } public void setDescription(String theDescription) { description = theDescription; } public static Reusable getInstance(String theDescription) { for(Reusable item : reusables) { if (item.getDescription( ).equals(theDescription)) { Reusable itemToReuse = item; reusables.remove(item); return itemToReuse; } } return new Reusable(theDescription); } public String toString( ) { return serialNum + " " + description; } public void recycle( ) { reusables.add(this); } }