普通工厂模式、工厂方法模式、抽象工厂模式
普通工厂模式
工厂方法和抽象工厂方法
工厂方法模式: fa,fb,fc等具体工厂实现一个工厂接口IF, 分别负责生产a,,b,c等产品;
特点是: 一个工厂负责生产单种产品。
如果要求一个工厂生产多种产品呢?
工厂方法: 不同工厂生产同一等级结构的产品; 比如, 电视机: 包括海尔, TCL等。
抽象工厂方法: 同一工厂生产的不同等级结构的产品; 比如海尔工厂, 包括 海尔洗衣机、 海尔电视机、 海尔冰箱等, 他们都是同一个工厂, 不同等级结构的产品, 海尔洗衣机属于洗衣机等级结构的产品, 海尔电视机属于电视机等级结构的产品,海尔电冰箱属于冰箱等级结构的产品, 属于一个产品族。
当要求工厂生产位于不同等级结构的不同产品时,比如要求工厂家电,包括电视机、冰箱、洗衣机等不同等级结构的产品, 且电视机包括海尔和TCL等, 冰箱包括 海尔、TCL等, 洗衣机包括海尔、格力等; 则需要用抽象工厂结构。
工厂方法面对的是一个产品等级结构;抽象工厂面对的是多个产品等级结构。
抽象工厂、具体工厂、 抽象产品、 具体产品
其实就是个拆分和组合的思路。
抽象工厂方法
interface superFactory{
TV createTV();
Fridge createFridge();//冰箱
}
HaierFactory implement superFactory{// 海尔工厂
TV createTV(){
// 海尔tv
}
Fridge createFridge(){
// 海尔fridge
}
}
GeliFactory implement superFactory{ // 格力工厂
TV createTV(){
// 格力tv
}
Fridge createFridge(){
// 格力fridge
}
}