1. ホーム

[解決済み】静的ファクトリーメソッドとは何ですか?

2022-03-29 23:03:51

質問

static factory"メソッドとは何ですか?

どのように解決するのですか?

データベース接続への直接アクセスは、リソースを大量に消費するため、避けています。そのため、静的なファクトリーメソッドである getDbConnection で、制限値以下であれば接続を作成します。 そうでない場合は、予備の接続を提供しようとしますが、ない場合は例外が発生して失敗します。

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);
     //...
   }
}