1 介紹
工廠方法模式同樣屬于類的創(chuàng)建型模式又被稱為多態(tài)工廠模式瞎饲。
工廠方法模式的定義是創(chuàng)建一個(gè)產(chǎn)品對(duì)象的工廠接口彼绷, 將具體對(duì)象的創(chuàng)建工作交給子類离陶。核心工廠類將不再負(fù)責(zé)產(chǎn)品的創(chuàng)建戴差,只負(fù)責(zé)編寫具體工廠類所需實(shí)現(xiàn)的接口。這樣的好處是當(dāng)程序需要更改時(shí)不需要修改具體工廠類的情況下引進(jìn)新產(chǎn)品咽笼。
2 模式中的幾個(gè)角色
抽象工廠
工廠方法模式中的核心工廠顷编,任何其它的工廠必須要實(shí)現(xiàn)該工廠。具體工廠
具體工廠負(fù)責(zé)實(shí)現(xiàn)核心工廠中的方法剑刑,負(fù)責(zé)實(shí)例化對(duì)象媳纬。抽象角色
所有的實(shí)例類都必須實(shí)現(xiàn)的公共接口。具體產(chǎn)品
每個(gè)具體工廠所創(chuàng)建的實(shí)例類施掏。
3 實(shí)現(xiàn)過(guò)程
- 3.1 實(shí)體類及其接口類
抽象角色: Fruit.class
public interface Fruit {
void eat();
}
具體產(chǎn)品類: Apple.class/Banana.class
public class Apple implements Fruit{
@Override
public void eat() {
System.out.println("吃蘋果");
}
}
public class Banana implements Fruit{
@Override
public void eat() {
System.out.println("吃香蕉");
}
}
核心工廠類:FruitFactory.class
public interface FruitFactory {
public Fruit getFruit();
}
具體工廠類:AppleFactory.class/BananaFactory.class
public class AppleFactory implements FruitFactory{
@Override
public Fruit getFruit() {
return new Apple();
}
}
public class BananaFactory implements FruitFactory{
@Override
public Fruit getFruit() {
return new Banana();
}
}
測(cè)試demo:DemoTest.class
public class DemoTest {
public static void main(String[] args) {
Fruit apple = new AppleFactory().getFruit();
Fruit banana = new BananaFactory().getFruit();
apple.eat();
banana.eat();
}
}
4 工廠方法模式和簡(jiǎn)單工廠模式的比較
工廠方法模式的核心是在一個(gè)抽象工廠類上钮惠,而簡(jiǎn)單工廠模式的核心是在具體產(chǎn)品類上。
當(dāng)系統(tǒng)需要添加一個(gè)新的產(chǎn)品對(duì)象時(shí)其监,工廠方法模式只需要添加一個(gè)具體對(duì)象和一個(gè)具體對(duì)象所對(duì)應(yīng)的具體工廠對(duì)象萌腿,而不需要對(duì)核心工廠接口進(jìn)行更改,很好的符合了“開放-封閉”的原則抖苦。
工廠方法模式退化后可以演變成簡(jiǎn)單工廠模式
上一篇:簡(jiǎn)單工廠模式
下一篇:抽象工廠模式