簡單工廠定義及本質
定義:提供一個建立對象執行個體的功能,而無須關心具體實作。被建立執行個體的類型可以是接口、抽象類,也可以是具體的類。
本質:選擇合适的實作類。
結構示意圖:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5iYkRjYjZGZ3MDNzADM2EWOzIzM0IWM3EWZjVTN3YDNj9CX5d2bs92Yl1iclB3bsVmdlR2LcNWaw9CXt92Yu4GZjlGbh5yYjV3Lc9CX6MHc0RHaiojIsJye.png)
UML類圖
調用時序圖
優缺點
關于接口:
(1)接口定義:接口是一種特殊的抽象類,接口所有方法都是抽象方法,所有屬性都是常量,沒有任何方法實作。
(2)接口作用:接口用來定義實作類的外觀,即實作類的行為定義,用來限制實作類的行為。
(3)接口思想:“封裝隔離”,“接口是系統可插拔的保證”。
(4)接口與抽象類的選擇:應優先選用接口;即要定義子類的行為,又要為子類提供公共功能時應選用抽象類。
工廠是跟接口與實作類在一起的,它處于封裝體内部,與知道實作類沒有關系。
工廠模式優點:
(1)封裝隔離
封裝:指“對被隔離體的行為封裝”或“對被隔離體的職責的封裝”;
隔離:指外部調用和内部實作,即外部調用隻能通過接口進行調用,而不需知道内部具體實作;
(2)解耦
實作了用戶端和具體實作類的解耦。用戶端通過工廠擷取所需要的接口對象。
工廠模式缺點:
(1)增加用戶端的複雜度:用戶端需要知道工廠所提供的參數代表的具體功能和含義;
(2)不便于擴充子工廠:工廠類私有化了構造方法,隻通過靜态方法建立接口,不能再通過寫子類改變接口的方法行為。