設計模式-1 簡單工廠設計模式

簡單工廠不是一個標準的設計模式,但是他太常用,有簡單,所以這是第一個熱身運動


接口回顧

  • Java接口的概念:

    java接口是一種特殊的抽象類,跟一般抽象類相比,接口裏面的所有方法都是抽象方法,接口裏面的所有方法都是抽象,所以屬性都是常量.也就是說,接口只有方法定義而沒有實現;

  • 用處

    定義實現類的外觀,約束實現類的行爲.接口相當於一份契約,根據外包應用需要的功能,約定實現類應該要實現的功能.

  • 接口的思想

    濃縮下來:“封裝隔離”:對被隔離體行爲的封裝,或者對被隔離體職責的封裝;而隔離指的是外部調用和內部實現,外部調用只能通過接口進行調用,外包調用是不知道內部具體實現的,也就是說外包調用和內部實現是被接口隔離開的

    • 使用接口的好處

      外包調用和內部實現被接口隔離,那麼只有接口不變,內部實現的變化就不會影響到外部應用,從而使得系統更靈活,擴展性和可危害性;”接口是系統可插拔性的保證”

    • 接口和抽象的選擇
      1.優先選擇接口 2.既要定義子類的行爲又要爲子類提供公共的功能時選擇抽象類


面向接口編程是Java編程的重要原則

通常,java程序分爲:表現層,邏輯層,數據層,他們之間都有通過接口來通訊
每一個層裏面,又有許多小模塊,每個模塊對外則是一個整體,所以一個模塊對外應該提供接口,其他地方需要使用到這個模塊的功能時,可以通過此接口來進行調用.”接口是被其隔離部分的外觀”

那麼”組件”是什麼東西?

組件就是能完成一個功能的封裝體.

Api api = new Imple()

在以上代碼的時候,在客戶端,既有接口,又有實現類,與思想”封裝隔離”不符合?
那麼我們如何做得只只接口不知實現呢?

解決方案:簡單工廠

簡單工廠能幫助我們真正地開始面向接口編程,像以前的做法,其實只是用到接口的多態部分的功能,而最重要的”封裝隔離性”並有沒體現出來

疑問:把”new Impl()”放到客戶端和放到簡單工廠裏面有什麼不同?
簡單工廠的位置是位於封裝體內的,也就是簡單工廠是根接口和具體的實現在一起的,算是封裝體內部的一個類,所以簡單工廠知道具體的實現類是沒有關係額.重新整理一下簡單工廠的結構圖

簡單工廠的寫法:
1.傳人type:
由於從客戶端調用工廠的時候傳人蔘數,就說明客戶端必須hide每個參數的含義,也需要理解每個參數對應的功能處理,這就要求必須在一定程度上向客戶暴露一定的內部實現細節
2.使用配置文件和反射技術

簡單工廠的本質是:選擇實現

發佈了75 篇原創文章 · 獲贊 4 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章