public
inte***ce
carpublic
class
bmwimplements
car@override
public
void
buy()}
public
class
benimplements
car@override
public
void
buy()}
public
inte***ce
ca***ctory
public
class
bwmfactory
implements
ca***ctory
}public
class
benfactory
implements
ca***ctory
}public
class
}
這種方式比較常見,需要哪乙個產品就建立相應的工廠生產相應的產品,有時候也可以利用反射的方式更簡潔地來生產具體產品物件,此時,需要在工廠方法的引數列表中傳入乙個class類來決定是哪乙個產品類。
public
inte***ce
carpublic
class
bmwimplements
car@override
public
void
buy()}
public
class
benimplements
car@override
public
void
buy()}
public
inte***ce
ca***ctory
public
class
factoryimpl
implements
ca***ctory
catch
(classnotfoundexception ex)
catch
(instantiationexception ex)
catch
(illegalacces***ception ex)
return
(t) car;}}
public
class
}
當我們的工廠生產的不只是一種產品的時候,就i要考慮將工廠也提取出乙個抽象類——抽象工廠模式。例如,benfactory在生產賓士車的時候,還要考慮到輪胎的型號(假設有a和b兩種型號的輪胎),那就要將benfactory提公升為抽象類,派生出兩種不同的工廠類,一種工廠類專門生產a型號輪胎的賓士車,一種工廠類專門生產b型號輪胎的賓士車。
public
inte***ce
itire
public
inte***ce
iengine
public
class
normaltire
implements
itire
}public
class
suvtire
implements
itire
}public
class
aengine
implements
iengine
}public
class
bengine
implements
iengine
}public
inte***ce
ca***ctory
public
class
afactory
implements
ca***ctory
@override
public iengine createengine()
}public
class
bfactory
implements
ca***ctory
@override
public iengine createengine()
}
設計模式 工廠模式之工廠方法模式
工廠方法模式是指定義乙個建立物件的介面,然後實現這個介面的工廠來決定建立什麼樣的例項。工廠方法讓類的例項推遲到子類中進行。在這個模式中,只關心需要建立的是什麼工廠,不需要關心建立的細節。而且新加入的產品符合開閉原則。1 建立支付介面,裡面定義抽象的支付方法。package com.gupao.vip...
設計模式之工廠方法模式
package com.csair.design.pattern 工廠方法,有抽象基類,每個子類生產乙個具體物件,與抽象工廠的關係是,抽象工廠生產多個產品 產品有某種內在聯絡 工廠方法只生產乙個物件 author ppt public class factorymethod public stati...
設計模式之工廠方法模式
在介紹工廠方法模式之前,先來介紹一下簡單工廠。什麼是簡單工廠?在類中,難免要例項化一些類,那麼我們把這些類的例項化抽離出來封裝成乙個工廠類,工廠類提供乙個公共的靜態或非靜態的方法來返回其他物件所需要的物件。這樣做的目的就是將物件的例項化與邏輯 分開,提高 的復用能力。這就是簡單工廠。public a...