1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| public interface Pool { void connect(); }
public class PoolObj implements Pool{
private String db;
public PoolObj(String db) { this.db = db; }
@Override public void connect() { System.out.println("连接 "+db); } }
public class PoolFactory { private HashMap<String,Pool> pools=new HashMap<>();
public Pool getPool(String db){ if (pools.get(db)!=null){ return pools.get(db); }else{ Pool pool=new PoolObj(db); pools.put(db,pool); return pool; } }
public void printMapCount(){ System.out.println(pools.size()); } }
@Test public void testFlyWeight(){ PoolFactory poolFactory=new PoolFactory(); Pool pool1=poolFactory.getPool("mysql"); Pool pool2=poolFactory.getPool("oracle"); pool1.connect(); pool2.connect(); Pool pool3=poolFactory.getPool("mysql"); Pool pool4=poolFactory.getPool("oracle"); pool3.connect(); pool4.connect();
poolFactory.printMapCount(); }
|