從一個ConnectionPool的實現看design pattern的運用 (四) (轉)
從一個ConnectionPool的實現看design pattern的運用 (四):namespace prefix = o ns = "urn:schemas--com::office" />
好了,同學們,大家對上回的“李四猜想”有沒有結果呀?
我們的口號是?。。。。。。
“沒有蛀牙”!
No! 是“至上”!
既然使用者有容易忘的可能,那就證明我們的工作做得不好。我們為什麼非要使用者做他們做不好或容易弄錯的事呢?
好吧,讓我們知錯就改:
public interface ConnectionMan extends PooledConnection.Pool{
//在這個interface裡,我們不再要求員必須封裝Connection, 他們只需要直接返回Connection。 實際上,程式設計師可以完全忘記封裝這碼事。
//我們將對返回的物件進行封裝。
Connection getConnection()throws Exception;
void clear();
void closeConnection(Connection conn);
}
//然後,我們用一下的decorator類對返回值進行封裝
public class ConnectionMan2ConnectionPool implements ConnectionPool{
public final Connection getConnection()throws SQLException{
return PooledConnection.decorate(man.getConnection(), man);
}
public final void clear(){
man.clear();
}
private final ConnectionMan man;
private ConnectionMan2ConnectionPool(ConnectionMan man){
this.man = man;
}
public static ConnectionPool decorate(ConnectionMan man){
return new ConnectionMan2ConnectionPool(man);
}
}
這樣,程式設計師只需要實現一個輔助interface ConnectionMan. 完全不要考慮封裝Connection的事。然後再用我們的ConnectionMan2ConnectionPool類把它轉換成ConnectionPool, 交給ConnectionPool的使用者使用。耶!
“那萬一李四忘了用ConnectionMan2ConnectionPool轉換怎麼辦?”
呵呵,別忘了,不是吃素的。使用者期待ConnectionPool, 而李四隻有ConnectionMan, 他想不轉換也不行啊!
什麼?今天的家庭作業?
啊,讓你們家長寫表揚信給ajoo老師。:)
玩笑。如果那位能發現進一步refactor的地方,歡迎指出!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-992454/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 從一個ConnectionPool的實現看design pattern的運用 (一) (轉)
- 從一個ConnectionPool的實現看design pattern的運用 (六) (轉)
- 從一個ConnectionPool的實現看design pattern的運用 (七) (轉)
- 從一個ConnectionPool的實現看design pattern的運用 (二) (轉)
- 從一個ConnectionPool的實現看design pattern的運用 (三) (轉)
- 從一個ConnectionPool的實現看design pattern的運用 (五) (轉)
- 從一個ConnectionPool的實現看design pattern的運用 (續六) (轉)
- 從一個ConnectionPool的實現看design pattern的運用 (source code for Java 1.1) (轉)Java
- aspectJ 實現design pattern
- 從編譯原理看一個直譯器的實現編譯原理
- Observer Design Pattern in C#! (轉)ServerC#
- 四則運算實現 (轉)
- 從零開始實現一個React(四):非同步的setStateReact非同步
- 從零開始實現一個簡易的Java MVC框架(四)--實現AOPJavaMVC框架
- STL and Design Pattern
- 實現四則運算的一條sql語句SQL
- 從零開始實現一個RPC框架(四)RPC框架
- 從一個群友問題看流複製實現原理
- 用python實現四則運算的生成與判定Python
- 用Python實現一個實時運動的大掛鐘效果Python
- Design Pattern理解碎片
- 從流程看企業營運(轉)
- 利用ANTLR4實現一個簡單的四則運算計算器
- 一個用C#實現的簡單http server (轉)C#HTTPServer
- 用java實現一個簡單的房屋管理程式。 (轉)Java
- 從另一個考慮來看程式碼的風格 (轉)
- 從一個安裝檔案看CGI的安全性 (轉)
- 解構Core J2EE Pattern ――GoF Design Pattern的自然延伸Go
- Design pattern 第一講 基礎知識
- 不太理解the design pattern java companion一書中的CommandJava
- 從一個例子看Go的逃逸分析Go
- [review]Design Pattern:CommandView
- 用java實現一個簡單的序列化的例子(轉)Java
- 用java實現一個簡單的序列化的例子 (轉)Java
- 從0搭建一個實用的MVVM框架MVVM框架
- 四個 Python 庫,實現超實用的命令列功能Python命令列
- 用一個棧實現另一個棧的排序排序
- 基於RabbitMQ.Client元件實現RabbitMQ可複用的 ConnectionPool(連線池)MQclient元件