Mình đang đọc phần đầu của cuốn Effective Java, nhưng mà vốn tiếng Anh còn kém nên chưa hiểu nhiều, đầu sách có phần “Consider static factory method instead of Constructor”. Có cao nhân nào thông thạo về vấn đề này thì chỉ mình với…
Còn đây là 1 ví dụ về static factory method mình copy từ Stack Overflow:
public class DbConnection
{
private static final int MAX_CONNS = 100;
private static int totalConnections = 0;
private static Set<DbConnection> availableConnections = new HashSet<DbConnection>();
private DbConnection()
{
// ...
totalConnections++;
}
public static DbConnection getDbConnection()
{
if(totalConnections < MAX_CONNS)
{
return new DbConnection();
}
else if(availableConnections.size() > 0)
{
DbConnection dbc = availableConnections.iterator().next();
availableConnections.remove(dbc);
return dbc;
}
else {
throw new NoDbConnections();
}
}
public static void returnDbConnection(DbConnection dbc)
{
availableConnections.add(dbc);
//...
}
}