使用工廠模式建立物件時,我們不需要對客戶端暴露建立邏輯,只需要通過乙個共同的介面(工廠)來建立即可,從而使得**簡潔易懂。
工廠方法模式中有以下幾個元素:
在介紹工廠方法模式之前,先介紹一下簡單工廠
簡單工廠的實現十分簡單:
共同的產品介面
產品類實現產品介面
提供工廠類,用於建立不同的產品
以生產汽車為例
1.共同的產品介面
public
inte***ce car
2.具體的產品
public
class
audi
implements
car}
public
class
bydimplements
car
}
3.建立工廠類,用於獲取某乙個具體的工廠
以下兩種方式獲取建立工廠類
方式一:通過傳入字串確定建立的產品
public
class ca***ctory else
if ("byd".equals(type))
return c;
}}
方式二:對每一種產品提供乙個建立類
public
class ca***ctory
public
static car createaudi()
}
使用時,直接呼叫工廠類獲取某個具體的產品
public
static
void
main(string args)
簡單工廠的結構十分簡單易懂,但是從上例可以看出,簡單工廠的擴充套件性很差。
如果我們要增加乙個產品,則必須
1. 新增乙個產品類
2. 新增相應的工廠方法
針對這個缺點,工廠方法模式進行了改進,準確來說,是針對第2點進行了改進。
上例中的產品介面和產品類我們暫時不修改,我們丟掉原來的工廠類,修改如下:
將工廠類介面化
具體的工廠生產具體的產品
1.工廠類介面化
public
inte***ce ca***ctory
2.具體的工廠生產具體的產品
public
class
audifactory
implements
ca***ctory
}
public
class
bydfactory
implements
ca***ctory
}
這樣我們在呼叫的時候,只需要指定特定的工廠,就能產生相應的產品了
public
static
void
main(string args)
如果要增加一件產品,在工廠方法模式中,只需要新增相應的實現類和實現工廠即可,不需要進入工廠類之中修改**了。
但是比較簡單工廠可以看出,工廠方法模式的缺點在於擴充套件的時候需要改動的內容變多了,不夠簡潔
這裡簡單總結一下簡單工廠和工廠方法模式
簡單工廠模式:
工廠方法模式:
設計模式 工廠模式之工廠方法模式
工廠方法模式是指定義乙個建立物件的介面,然後實現這個介面的工廠來決定建立什麼樣的例項。工廠方法讓類的例項推遲到子類中進行。在這個模式中,只關心需要建立的是什麼工廠,不需要關心建立的細節。而且新加入的產品符合開閉原則。1 建立支付介面,裡面定義抽象的支付方法。package com.gupao.vip...
設計模式之工廠方法模式
package com.csair.design.pattern 工廠方法,有抽象基類,每個子類生產乙個具體物件,與抽象工廠的關係是,抽象工廠生產多個產品 產品有某種內在聯絡 工廠方法只生產乙個物件 author ppt public class factorymethod public stati...
設計模式之工廠方法模式
在介紹工廠方法模式之前,先來介紹一下簡單工廠。什麼是簡單工廠?在類中,難免要例項化一些類,那麼我們把這些類的例項化抽離出來封裝成乙個工廠類,工廠類提供乙個公共的靜態或非靜態的方法來返回其他物件所需要的物件。這樣做的目的就是將物件的例項化與邏輯 分開,提高 的復用能力。這就是簡單工廠。public a...