設計模式(Design Patterns)筆記之一:Abstract Factory 定義:提供一個創建一系列相關或相互依賴對象的接口,而無需指定它們具體的類。提供創建對象的接。 工廠模式是我們最常用的模式,是用來創建對象的,它就相當于創建對象的new。 例如我們有一個類Example,我們要創建Example的對象: ![]() ![]() ![]() ![]() 如果創建Example時做的事情不是如賦值這樣簡單的事,可能是很長一段代碼,如果也寫入構造函數中,那明顯的就違背了面向對象的原則. 我們需要將創建實例的責任與使用實例的責任分開, 使得 ![]() ![]() 就是簡單的責任:使用Example這個實例;而創建Example的任務就交給了Factory工廠模式. 按照傳統方法,我們如果需要繼承Example類,生成MyExample,就需要定義Example為Interface,然后,不斷繼承這個Interface,生成許多子類,造成以后代碼維護是如此的困難。 如果,我們開始就采用了工廠模式,也許就沒有這么多的煩惱了。 我們生成一個Factory,它專門負責生成Example的實例。 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 然后,那么在你的程序中,如果要實例化MyExample時.就使用 ![]() ![]() 具體使用: 工廠模式有以下三種: 1. 簡單工廠(Simple Factory) 2. 工廠方法(Factory Method); 3. 抽象工廠(Abstract Factory)。 我們先看一段代碼 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 這里,我們需要創建多個對象,復雜性提高,于是需要采用Abstract Factory來封裝共同屬性和方法,而將不同的屬性和方法通過子類來實現。 簡而言之,工廠模式的目的就是用來實現實例分發。 工廠模式中幾種類型的一些差別: 簡單工廠模式是根據參數來決定產生實例; 簡單工廠模式, 核心是一個實類; 工廠方法模式的核心是一個抽象工廠類; 工廠方法模式可以允許很多實的工廠類從抽象工廠類繼承下來, 從而可以在實際上成為多個簡單工廠模式的綜合; 工廠方法一般只創建一個實例,而Abstract Factory創建多個實例。 |