什么是静态工厂方法?

什么是静态工厂方法?

什么是“静态工厂”方法?



慕码人2483693
浏览 1698回答 3
3回答

慕婉清6462132

我们避免直接访问数据库连接,因为它们是资源密集型的。所以我们使用静态工厂方法getDbConnection如果我们低于极限,就会产生连接。否则,它试图提供“备用”连接,如果没有异常,则失败。public&nbsp;class&nbsp;DbConnection{ &nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;final&nbsp;int&nbsp;MAX_CONNS&nbsp;=&nbsp;100; &nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;int&nbsp;totalConnections&nbsp;=&nbsp;0; &nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;Set<DbConnection>&nbsp;availableConnections&nbsp;=&nbsp;new&nbsp;HashSet<DbConnection>(); &nbsp;&nbsp;&nbsp;private&nbsp;DbConnection(){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;... &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;totalConnections++; &nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;DbConnection&nbsp;getDbConnection(){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(totalConnections&nbsp;<&nbsp;MAX_CONNS){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;new&nbsp;DbConnection(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else&nbsp;if(availableConnections.size()&nbsp;>&nbsp;0){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DbConnection&nbsp;dbc&nbsp;=&nbsp;availableConnections.iterator().next(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;availableConnections.remove(dbc); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;dbc; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;NoDbConnections(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;returnDbConnection(DbConnection&nbsp;dbc){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;availableConnections.add(dbc); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//... &nbsp;&nbsp;&nbsp;}}

慕容708150

注意!“静态工厂法是不与工厂法模式“(C)有效的Java,约书亚·布洛赫。工厂方法:“定义用于创建对象的接口,但让实现接口的类决定实例化哪个类。Factory方法允许类将实例化推迟到子类”(C)Gof。“静态工厂方法只是一个返回类实例的静态方法。”(C)有效的Java,约书亚·布洛赫。通常这种方法在特定的类中。不同之处:静态工厂方法的核心思想是控制对象的创建,并将其从构造函数委托给静态方法。要创建的对象的决策类似于在方法之外所做的抽象工厂(在普通情况下,但并非总是如此)。而钥匙(!)工厂方法的思想是委托决定在工厂方法中创建哪个类的实例。例如,经典的Singleton实现是静态工厂方法的特例。常用的静态工厂方法示例:价值getInstance新情况
打开App,查看更多内容
随时随地看视频慕课网APP