package chapter6;
class Connection {
private static int count = 0;
private int i = 0;
private Connection() { System.out.println("Connection()");}
static Connection makeConnection() {
count++;
return new Connection();
}
public static int howMany() { return count; }
public String toString() {
return ("Connection " + count);
}
}
public class ConnectionManager {
static int howManyLeft = 3;
static Connection[] ca = new Connection[3];
{
for(Connection x : ca)
x = Connection.makeConnection();
}
public static Connection getConnection() {
if(howManyLeft > 0)
return ca[--howManyLeft];
else {
System.out.println("No more connections");
return null;
}
}
public static void main(String[] args) {
ConnectionManager cm = new ConnectionManager();
System.out.println(cm.howManyLeft);
cm.getConnection();
System.out.println(howManyLeft);
cm.getConnection();
System.out.println(howManyLeft);
cm.getConnection();
System.out.println(cm.getConnection());
System.out.println(howManyLeft);
}
}
package chapter6;
class Soup1{
private Soup1(){}
public static Soup1 makeSoup(){
return new Soup1();
}
}
class Soup2{
private Soup2(){}
private static Soup2 ps1 = new Soup2();
public static Soup2 access(){
return ps1;
}
public void f(){}
}
public class Lunch {
void testPrivate(){}
void testStatic(){
Soup1 soup1 = Soup1.makeSoup();
}
void testSingleton(){
Soup2.access().f();
}
}