天天看點

反射與工廠設計模式|學習筆記

開發者學堂課程【Java 進階程式設計:反射與工廠設計模式】學習筆記,與課程緊密聯系,讓使用者快速學習知識。

課程位址:

https://developer.aliyun.com/learning/course/20/detail/378

反射與工廠設計模式

目錄:

1、傳統工廠設計模式

2、利用工廠設計模式解決

3、為 IMessage 追加一個子類

1.傳統工廠設計模式

如果要想進行對象的執行個體化處理除了可以使用關鍵字 new 之外,還可以使用反射機制來完成,一定會思考:為什麼要提供有一個反射的執行個體化? 使用關鍵字 new 還是使用反射 ?

如果要想更好的了解此類問題,最好的解釋方案就是通過工廠設計模式來解決。工廠設計模式的最大特點:用戶端的程式類不直接牽扯到對象的執行個體化管理,隻與接口發生關聯,通過工廠類擷取指定接口的執行個體化對象。

2.利用工廠設計模式解決

在實際的開發之中,接口的主要作用是為不同的層提供一個操作标準。但如果此時直接将一個子類設定執行個體化操作,一定會有耦合問題,是以使用工廠設計模式來解決此問題

反射與工廠設計模式|學習筆記

3.為 IMessage 追加一個子類

此種工廠設計模式屬于靜态工廠設計模式,也就是說如果現在要追加一個子類,則意味着工廠類一定要做出修改,因為不追加這種判斷是無法擷取指定接口對象的。

工廠設計模式最有效解決的是子類與用戶端的耦合問題,解決的核心思想是在于提供有一個工廠類作為過渡端,随着項目的進行,IMessage 接口可能會有更多子類,随着時間的推移子類産生的可能越來越多,那麼此時就意味着工廠類永遠都要進行修改 。

最好的解決方案就是不使用關鍵字 new 來完成,因為關鍵字 new 在使用的時候需要有一個明确的類存在。

newInstance () 方法隻需要有一個明确表示類名稱的字元串即可應用。

利用反射機制實作的工廠設計模式,最大的優勢在于對于接口子類的擴充将不再影響到工廠類的定義。

反射與工廠設計模式|學習筆記

存在有大量的接口,并且這些接口都可能需要通過工廠類執行個體化,此時的工廠設計模式不應該隻為一個 IMessage 接口服務,應該變為為所有的接口服務。

反射與工廠設計模式|學習筆記

此時的工廠設計模式将不再受限于指定的接口,可以為所有的接口提供執行個體化而應該變為為所有的接口服務。