在工廠方法模式的基礎(chǔ)上衡奥,新增加了產(chǎn)品族的概念瓤介。將原來的一對(duì)一關(guān)系吕喘,變成了一對(duì)多,這個(gè)一對(duì)多和簡(jiǎn)單工廠模式的不同刑桑,簡(jiǎn)單工廠模式的一對(duì)多氯质,指的是一個(gè)工廠類對(duì)應(yīng)多個(gè)創(chuàng)建的對(duì)象,這里的一對(duì)多祠斧,是一個(gè)抽象工廠病梢,對(duì)應(yīng)的多個(gè)產(chǎn)品族的子工廠,每個(gè)子工廠中對(duì)應(yīng)著多個(gè)系列的具體產(chǎn)品實(shí)現(xiàn)梁肿。用戶在使用的時(shí)候蜓陌,就可以隨意組合各種產(chǎn)品,程序也變的更靈活吩蔑。
上篇已經(jīng)說到:去KFC吃薯?xiàng)l钮热。
本篇演示:去吃KFC的薯?xiàng)l,喝Dicos的雪碧
//首先烛芬,產(chǎn)品接口 吃喝都有
public interface IChips {
void eat();
}
public interface IDrink {
void drink();
}
//具體產(chǎn)品
//吃的
public class DIcosChip implements IChips {
@Override
public void eat() {
System.out.println("吃到了麥當(dāng)勞的薯?xiàng)l");
}
}
public class KFCChip implements IChips {
@Override
public void eat() {
System.out.println("吃到了KFC的薯?xiàng)l");
}
}
//喝的
public class KFCCola implements IDrink {
@Override
public void drink() {
System.out.println("喝到了肯德基的可樂");
}
}
public class DicosSprite implements IDrink {
@Override
public void drink() {
System.out.println("喝到了麥當(dāng)勞的雪碧");
}
}
//抽象工廠
public interface IStore {
//不僅可以吃到薯?xiàng)l隧期,還能喝到汽水哦,后續(xù)還有瓜子赘娄,花生米哦
IChips getChips();
IDrink getDrink();
}
//具體工廠
public class KFC implements IStore {
@Override
public IChips getChips() {
System.out.println("肯德基生產(chǎn)的薯?xiàng)l");
//具體生產(chǎn)對(duì)象在這里
return new KFCChip();
}
@Override
public IDrink getDrink() {
System.out.println("肯德基生產(chǎn)的可樂");
return new KFCCola();
}
}
public class Dicos implements IStore {
@Override
public IChips getChips() {
System.out.println("德克士生產(chǎn)了薯?xiàng)l仆潮!");
//在這里生產(chǎn)薯?xiàng)l,你也可以產(chǎn)出其他家的薯?xiàng)l遣臼,用戶是不知道滴性置。有種貍貓換太子的感覺
return new DIcosChip();
}
@Override
public IDrink getDrink() {
System.out.println("麥當(dāng)勞生產(chǎn)的雪碧");
return new DicosSprite();
}
}
//測(cè)試類
public class AbstractFactoryTest {
public static void main(String[] args) {
IStore kfc = new KFC();
IChips chips = kfc.getChips();
chips.eat();
new Dicos().getDrink().drink();
}
}
//結(jié)果:
肯德基生產(chǎn)的薯?xiàng)l
吃到了KFC的薯?xiàng)l
麥當(dāng)勞生產(chǎn)的雪碧
喝到了麥當(dāng)勞的雪碧
簡(jiǎn)單工廠模式,工廠方法模式揍堰,抽象工廠模式都叫工廠模式鹏浅,實(shí)際運(yùn)用中嗅义,沒有必要嚴(yán)格區(qū)分哪種模式,而應(yīng)該考慮是否達(dá)到了解耦的目的隐砸。