設計模式(三) 工廠方法模式

2021-09-02 22:32:59 字數 2281 閱讀 3600

工廠模式一般分為三種:簡單工廠, 工廠方法, 抽象工廠

簡單工廠

簡單工廠模式又叫靜態工廠方法模式,是通過專門定義乙個類負責建立其他類的例項, 被建立的例項通常都具有共同的父類。

簡單工廠將物件的建立過程進行了封裝,使用者不需要知道具體的建立過程,只需要呼叫工廠類獲取物件即可。

工廠類的寫法是通過switch-case或if-else來判斷物件的建立過程,是個具體的類,並非介面抽象類。

缺點是擴充套件性差,新增一種產品都需要修改工廠方法;不同的產品需要不同額外引數的時候 不支援。

對於產品種類相對較少的情況,考慮使用簡單工廠模式。使用簡單工廠模式的客戶端只需要傳入工廠類的引數,不需要關心如何建立物件的邏輯,可以很方便地建立所需產品。

public class client 

//抽象產品

public inte***ce product

//具體產品:producta

static class concreteproduct1 implements product

}//具體產品:productb

static class concreteproduct2 implements product

}final class const

static class ******factory

return null;}}

}

工廠方法模式工廠方法模式定義了乙個建立物件的介面,由子類決定要例項化的類是哪乙個。工廠方法讓類把例項化推遲到子類。通過子類來建立物件,將客戶從具體的型別中解耦;

簡單工廠模式每增加乙個產品都要修改對應的具體工廠類,這增加了系統的複雜度,違背了「開閉原則」。

「工廠方法模式」是對簡單工廠模式的進一步抽象化,其好處是可以使系統在不修改原來**的情況下引進新的產品,即滿足開閉原則。

優點:

缺點:應用場景:

工廠方法模式由抽象工廠、具體工廠、抽象產品和具體產品等4個要素構成。

1. 模式的結構

工廠方法模式的主要角色如下。

抽象工廠(abstract factory):提供了建立產品的介面,呼叫者通過它訪問具體工廠的工廠方法 newproduct() 來建立產品。

具體工廠(concretefactory):主要是實現抽象工廠中的抽象方法,完成具體產品的建立。

抽象產品(product):定義了產品的規範,描述了產品的主要特性和功能。

具體產品(concreteproduct):實現了抽象產品角色所定義的介面,由具體工廠來建立,它同具體工廠之間一一對應。

package factorymethod;

public class abstractfactorytest catch (exception e)

}}//抽象產品:提供了產品的介面

inte***ce product

//具體產品1:實現抽象產品中的抽象方法

class concreteproduct1 implements product

}//具體產品2:實現抽象產品中的抽象方法

class concreteproduct2 implements product

}//抽象工廠:提供了廠品的生成方法

inte***ce abstractfactory

//具體工廠1:實現了廠品的生成方法

class concretefactory1 implements abstractfactory

}//具體工廠2:實現了廠品的生成方法

class concretefactory2 implements abstractfactory

}

抽象工廠模式抽象工廠模式提供乙個介面,用於建立相關或依賴物件的家族,而不需要明確指定具體類。當你需要建立產品家族和想讓製造的相關產品集合起來時,可以使用抽象工廠。

所有工廠都是用來封裝物件的建立。

工廠方法使用繼承:把物件的建立委託給子類,子類實現工廠方法來建立物件。

抽象工廠使用物件組合:物件的建立被實現在工廠介面所暴露出來的方法中。

抽象工廠建立相關的物件家族,而不需要依賴他們的具體類。

無論哪種模式,由於可能封裝了大量物件和工廠建立,新加產品需要修改已定義好的工廠相關的類,因此對於產品和工廠的擴充套件不太友好,利弊需要權衡一下

設計模式(三) 工廠方法模式

在設計模式 簡單工廠模式文章中介紹了簡單工廠模式,通過乙個例子講述了如何使用簡單工廠模式。同時也留下了乙個問題,那就是簡單工廠模式破壞了開放 封閉原則。那麼本文將介紹另外一種設計模式 工廠方法模式。主要介紹其概念 用途 實現方式 以及優缺點等。工廠方法模式 factory method patter...

設計模式(三) 工廠方法模式

工廠方法模式是我們前面提到的簡單工廠模式的延伸,他是gof23中的建立型模式,解決的仍然是產品物件建立相關問題,也是我們比較常用的一種設計模式。工廠方式法模式 factory method 定義了乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到子類。型別是建立型模式。...

設計模式之(三) 工廠方法模式

女媧補天的故事大家都聽過吧,這個故事是說,女媧在補了天後,下到凡間一看,哇塞,風景太優美了,天空是湛 藍的,水是清澈的,空氣是清新的,太美麗了,然後就待時間長了就有點寂寞了,沒有動物,這些看的到 都是靜態的東西呀,怎麼辦?別忘了是神仙呀,沒有辦不到的事情,於是女媧就架起了八卦爐 技術術語 建立工廠 ...