設計模式 工廠方法模式

2021-08-20 19:33:26 字數 1615 閱讀 2550

中間斷更了四天,今天準備補回來,哎果然還是不能偷懶啊,偷懶一時爽,事後火葬場。

前面第乙個介紹的設計模式為簡單工廠模式,那這一節又是幾個工廠模式,叫工廠方法模式,這兩者之間有什麼不同呢?或者說,既然是寫在後面,他比簡單工廠模式好在**了呢?

前面我們在簡單工廠模式中是用乙個方法來給所有的類建立例項,如果這個工廠出了問題,那麼我們所有的類將不能建立例項了;而且如果我們需要增加乙個類的話就要在建立的**中去修改**,增加乙個case或者if-else分支,這違背了開放-關閉原則。

下面我們看一些工廠方法模式怎麼解決這些問題。

工廠方法模式又稱工廠模式、多型工廠模式和虛擬構造器模式,通過定義工廠父類負責定義建立物件的公共介面,而子類則負責生成具體的物件。

下面使類圖:

從圖中可以看出每一種產品類都對應了乙個自己專屬的工廠類,這些人工廠類又實現了同乙個介面,這樣如果我們需要增加乙個產品的話只需要增加乙個產品類,和乙個產品工廠,這樣就不需要修改原來的**。

**:

facroty 介面類:

public

inte***ce factory

circlefactory 工廠類:

public

class

circlefactory

implements

factory

}

rectanglefactory 工廠類

public

class

rectanglefactory

implements

factory

}

squarefactory 工廠類:

public

class

squarefactory

implements

factory

}

shape介面:

public

inte***ce shape

circle 類:

public class circle implements shape}

square 類

public

class

square

implements

shape

}

rectangle 類:

public

class

rectangle

implements

shape

}

client 類:

import org.junit.test;

public

class

client

}

以上為我簡單的實現了一下工廠方法模式的**;如果我們想要新增乙個新的圖形,只需要增加兩個新的類就可以了而不需要再改動原有的**;

設計模式 工廠方法模式

一 工廠方法 factory method 模式 工廠方法模式的意義是定義乙個建立產品物件的工廠介面,將實際建立工作推遲到工廠子類當中。核心工廠類不再負責產品的建立,這樣核心類成為乙個抽象工廠角色,僅負責具體工廠子類必須實現的介面,這樣進一步抽象化的好處是使得工廠方法模式可以使系統在不修改具體工廠角...

設計模式 工廠方法模式

1 factorymethod.h ifndef factorymethod h define factorymethod h include include using namespace std class osproduct 產品,product,產品的抽象類 class windowspro...

設計模式 工廠方法模式

框架的基礎知識 對框架的理解 框架和設計模式的關係 工廠方法模式 定義 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類,factory method使乙個類的例項化延遲到其子類。結構 產品 public inte ce product 具體產品 public class productimpl...