本文摘自:http://danielzzu.blog.163.com/blog/static/11851530420112311303240/
一、什麼是平行的類階層 簡單點說,假如有兩個類階層,其中一個類層次中的每個類在另一個類層次中都有一個對應的類的結構,就被稱為平行的類階層。 舉個例子來說,硬碟對象有很多種,如分成台式機硬碟和筆記本硬碟,在台式機硬碟的具體實現上面,又有希捷、西數等不同品牌的實現,同樣在筆記本硬碟上,也有希捷、日立、IBM等不同品牌的實現;硬碟對象具有自己的行為,如硬碟能儲存資料,也能從硬碟上擷取資料,不同的硬碟對象對應的行為對象是不一樣的,因為不同的硬碟對象,它的行為的實現方式是不一樣的。如果把硬碟對象和硬碟對象的行為分開描述,那麼就構成了1所示的結構:
圖1 平行的類階層 硬碟對象是一個類層次,硬碟的行為這邊也是一個類層次,而且兩個類層次中的類是對應的。台式機西捷硬碟對象就對應著硬碟行為裡面的台式機西捷硬碟的行為;筆記本IBM硬碟就對應著筆記本IBM硬碟的行為,這就是一種典型的平行的類階層。 這種平行的類階層用來幹什麼呢?主要用來把一個類層次中的某些行為分離出來,讓類層次中的類把原本屬於自己的職責,委託給分離出來的類去實現,從而使得類層次本身變得更簡單,更容易擴充和複用。 一般來講,分離出去的這些類的行為,會對應著類階層來組織,從而形成一個新的類階層,相當於原來對象的行為的這麼一個類階層,而這個階層和原來的類階層是存在對應關係的,因此被稱為平行的類階層。二、Factory 方法模式跟平行的類階層的關係 可以使用Factory 方法模式來串連平行的類層次。 看上面的樣本圖1,在每個硬碟對象裡面,都有一個Factory 方法createHDOperate,通過這個Factory 方法,用戶端就可以擷取一個跟硬碟對象相對應的行為對象。在硬碟對象的子類裡面,會覆蓋父類的Factory 方法createHDOperate,以提供跟自身相對應的行為對象,從而自然的把兩個平行的類層次串連起來使用。
關於Factory 方法模式的更多內容請參考《Factory 方法模式(Factory
Method Pattern)理論篇》和《Factory 方法模式(Factory
Method Pattern) 應用篇》