抽象工厂模式引出了产品族的概念(Product family)给出下边的例子:
一个生产厂(富士康)能生产苹果的或者是谷歌的手机和笔记本电脑。
苹果和谷歌是两个不同的产品族。
手机和笔记本电脑是两个不同的产品类型。
生产一个产品首先选择它的产品组,然后确定产品类型就能生产出来。
具体代码:
//手机
abstract class MobilePhone{}
class IPhone extends MobilePhone{}//苹果手机
class AndroiPhone extends MobilePhone{}//谷歌手机
//笔记本电脑
abstract class Laptop{}
class MacBook extends Laptop{}//苹果笔记本电脑
class ChromeBook extends Laptop{}//谷歌笔记本电脑
抽象工厂类:
//富士康抽象工厂类
abstract class Foxconn{
public abstract MobilePhone producePhone();
public abstract Laptop produceLaptop();
}
工厂子类:
//富士康苹果产品生产线
class AppleWorkshop extends Foxconn{
public MobilePhone producePhone(){
return new IPhone();
}
public Laptop produceLaptop(){
return new MacBook();
}
}
//富士康谷歌产品生产线
class GoogleWorkshop extends Foxconn{
public MobilePhone producePhone(){
return new AndroidPhone();
}
public Laptop produceLaptop(){
return new ChromeBook();
}
}
具体调用时的代码:
public void main(String[] args) {
Foxconn factory = null;
String brand = "Apple";
if(brand.equals("Apple")){
factory = new AppleWorkshop();
}else if(brand.equals("Google")){
factory = new GoogleWorkshop();
}
MobilePhone phone = factory.producePhone();
Laptop laptop = factory.produceLaptop();
}