JAVA基礎(chǔ)23種設(shè)計(jì)模式----工廠(chǎng)模式--MonkeyKing
工廠(chǎng)方法模式同樣屬于類(lèi)的創(chuàng)建模式又被稱(chēng)為多臺(tái)工廠(chǎng)模式。工廠(chǎng)方法模式的意義是定義一個(gè)創(chuàng)建產(chǎn)品對(duì)象的工廠(chǎng)接口,將實(shí)際創(chuàng)建工作推遲到子類(lèi)當(dāng)中。核心工廠(chǎng)類(lèi)不再負(fù)責(zé)產(chǎn)品的創(chuàng)建,這樣核心類(lèi)成為一個(gè)抽象工廠(chǎng)角色,僅負(fù)責(zé)具體工廠(chǎng)子類(lèi)必須實(shí)現(xiàn)的接口,這樣進(jìn)一步抽象化的好處是使得工廠(chǎng)方法模式可以使系統(tǒng)在不修改具工廠(chǎng)角色的情況下引進(jìn)新的產(chǎn)品。
- 抽象工廠(chǎng)(Creator)
- 工廠(chǎng)方法模式的核心,任何工廠(chǎng)類(lèi)都必須實(shí)現(xiàn)設(shè)個(gè)接口。
- 具體工廠(chǎng)(creator create)
- 具體工廠(chǎng)類(lèi)是抽象工廠(chǎng)的一個(gè)實(shí)現(xiàn),負(fù)責(zé)實(shí)例化產(chǎn)品對(duì)象。
- 抽象(product)
- 工廠(chǎng)方法模式所創(chuàng)建的所有對(duì)象的父類(lèi),它負(fù)責(zé)描述所有實(shí)例所共有的接口。
- 具體產(chǎn)品(concrete product)
- 工廠(chǎng)方法模式所創(chuàng)建的具體實(shí)例對(duì)象
具體實(shí)現(xiàn)
抽象工廠(chǎng)
public interface FruitFactory {
Fruit getFruit();
}
具體工廠(chǎng)
public class AppleFactory implements FruitFactory {
@Override
public Fruit getFruit() {
return new Apple();
}
}
//===========================================
public class BananaFactory implements FruitFactory {
@Override
public Fruit getFruit() {
return new Banana();
}
}
抽象
public interface Fruit {
void get();
}
具體產(chǎn)品
public class Apple implements Fruit {
public void get() {
System.out.println("get apple");
}
}
//===========================================
public class Banana implements Fruit {
public void get() {
System.out.println("get banana");
}
}
實(shí)現(xiàn)
public class MainClass {
public static void main(String[] args){
FruitFactory appleFactory = new AppleFactory();
Fruit apple = appleFactory.getFruit();
apple.get();
FruitFactory bananaFactory = new BananaFactory();
Fruit banana = bananaFactory.getFruit();
banana.get();
}
}