2011年6月12日 星期日

關於 interface

以上是網路上找到一些對於 interface 的說明文章,順便記下來
因為網路上有很多關於 interface 的說法和理解方式
這邊主要是記下自已容易了解的說法,以方便理解…



第一篇 :

為什麼要用 interface 與 implementation?

主要目的就是減少實做關聯(reduce coupling)。

舉例來說,存取使用者資料的 dao 名為 UserDaoImpl,如果整個系統都是直接使用 UserDaoImpl 的話,問題有二:

第一點,不利測試,當為了測試系統邏輯而非資料庫操作時,仍必須連線資料庫,為了測試必須準備測試資料且效能也不好。
如果整個系統是使用 UserDao 這樣的 interface 的話,可以在測試時,提供一個如 UserDaoTestImpl 這樣的模擬實做,就不用真的去連資料庫。


第二點,無法快速更換實做,當資料庫要從 MySql 換成 Oracle 時,必須將整個系統用到 UserDaoMySqlImpl 都換成 UserDaoOracleImpl。
如果整個系統是使用 UserDao 這樣的 interface 的話,只要在設定檔裡切換實做版本即可。

當然也可以考慮用繼承的方式取代 interface,但是會有單一繼承的困擾。

第二篇 :


顧名思義接口的誕生是為了規範類的,它可以避免類在設計上的不一致,可以實現規範和具體實現的分離。這在多人合作的開發中猶為重要。
我們打個比方:插座,我們只需要定義出他又兩個功能,一個是2口插座,一個是3口插座。這個就成為一個工業標準,其它人可以拿者這個插座,
去對接他的產品,看看是否可以插上去,至於插座後面的具體複雜的實現我們並不關心,交給生產插座的廠家去做吧,牌子很多,比如西門子的,鴻雁的等。
好處就是多人合作的時候規範化了,也可以隨時更換實現。

沒有留言:

張貼留言