在 簡單工廠模式 一節介紹了簡單工廠模式,提到了簡單工廠模式違背了開閉原則,而「工廠方法模式」是對簡單工廠模式的進一步抽象化,其好處是可以使系統在不修改原來**的情況下引進新的產品,即滿足開閉原則。
模式的結構與實現
工廠方法模式由抽象工廠、具體工廠、抽象產品和具體產品等4個要素構成。本節來分析其基本結構和實現方法。
模式的結構 工廠方法模式的主要角色如下。
結構類圖:
**示例
public
abstract
class
mobile
public
class
huawei
extends
mobile
}public
class
iphone
extends
mobile
}
public
abstract
class
abstractfactory
public
class
extends
abstractfactory
}public
class
huaweiconcretefactory
extends
abstractfactory
}
public
class
client
}
執行結果:
public
static
void
main
(string[
] args)
throws classnotfoundexception, instantiationexception, illegalacces***ception
執行結果
huawei p40 mobile
**案例類圖:
優缺點優點:
缺點:應用場景
工廠方法模式的典型應用及原始碼分析
public
inte***ce
ilogge***ctory
具體工廠角色
抽象產品角色為logger
,具體產品角色為logger
的實現類:
這裡直接通過我自己的專案包截下圖,可以看到實現類有很多slf4j
、kafka
的都有。
這裡以loggercontext
作為具體工廠,其整個結構類圖如下:
設計模式 工廠方法模式及其應用
工廠方法模式 是23中基本設計模式之一,它定義了乙個建立物件的介面,但由子類決定要例項化的類是哪乙個。工廠方法讓類的例項化延遲到了子類。注 這裡所謂的 決定 並不是指模式允許子類本身在執行時做決定,而是在編寫建立者類時,不需要知道實際建立的產品是哪乙個,選擇了使用哪個子類,就等於決定了建立的產品是什...
設計模式 工廠方法模式
一 工廠方法 factory method 模式 工廠方法模式的意義是定義乙個建立產品物件的工廠介面,將實際建立工作推遲到工廠子類當中。核心工廠類不再負責產品的建立,這樣核心類成為乙個抽象工廠角色,僅負責具體工廠子類必須實現的介面,這樣進一步抽象化的好處是使得工廠方法模式可以使系統在不修改具體工廠角...
設計模式 工廠方法模式
1 factorymethod.h ifndef factorymethod h define factorymethod h include include using namespace std class osproduct 產品,product,產品的抽象類 class windowspro...