为了账号安全,请及时绑定邮箱和手机立即绑定

什么是静态工厂方法?

什么是静态工厂方法?

慕码人2483693 2019-06-28 15:51:05
什么是静态工厂方法?什么是“静态工厂”方法?
查看完整描述

3 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

我们避免直接访问数据库连接,因为它们是资源密集型的。所以我们使用静态工厂方法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);
     //...
   }}


查看完整回答
反对 回复 2019-06-28
?
慕容708150

TA贡献1831条经验 获得超4个赞

注意!“静态工厂法工厂法模式“(C)有效的Java,约书亚·布洛赫。

工厂方法:“定义用于创建对象的接口,但让实现接口的类决定实例化哪个类。Factory方法允许类将实例化推迟到子类”(C)Gof。

“静态工厂方法只是一个返回类实例的静态方法。”(C)有效的Java,约书亚·布洛赫。通常这种方法在特定的类中。

不同之处:

静态工厂方法的核心思想是控制对象的创建,并将其从构造函数委托给静态方法。要创建的对象的决策类似于在方法之外所做的抽象工厂(在普通情况下,但并非总是如此)。而钥匙(!)工厂方法的思想是委托决定在工厂方法中创建哪个类的实例。例如,经典的Singleton实现是静态工厂方法的特例。常用的静态工厂方法示例:

  • 价值
  • getInstance
  • 新情况


查看完整回答
反对 回复 2019-06-28
  • 3 回答
  • 0 关注
  • 1697 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信