## 1. 定義
>抽象工廠模式是一個超級工廠,用來創建其他工廠。 這個工廠也被稱為工廠的工廠。
## 2. 場景
>如果需要創建的子類越來越多,不止只有手機,還有ipad、電腦什么的,難道每一個子類都要對應一個工廠類嗎?
解決上述問題的辦法是可以用抽象工廠模式
## 3. 重構工廠方法的代碼
結構變化如下:

**`phone包下代碼:`**
~~~
public interface IPhone {
void packaging();
}
public class HWPhone implements IPhone {
@Override
public void packaging() {
System.out.println("華為手機");
}
}
public class MIPhone implements IPhone {
@Override
public void packaging() {
System.out.println("小米手機");
}
}
~~~
**`ipad包下代碼:`**
~~~
public interface Ipad {
void packaging();
}
public class HWpad implements Ipad {
@Override
public void packaging() {
System.out.println("華為ipad");
}
}
public class MIpad implements Ipad {
@Override
public void packaging() {
System.out.println("小米ipad");
}
}
~~~
**`factory包下代碼:`**
~~~
public interface IFactory {
IPhone packaging1();
Ipad packaging2();
}
public class Factory implements IFactory {
@Override
public IPhone packaging1() {
return new HWPhone();
}
@Override
public Ipad packaging2() {
return new HWpad();
}
}
~~~
**`測試類代碼:`**
~~~
public class TestClient {
public static void main(String[] args) {
IFactory factory = new Factory();
factory.packaging1().packaging();
factory.packaging2().packaging();
}
}
~~~
## 4. 總結
>當需要創建的對象是一系列相互關聯或相互依賴的產品族時,便可以使用抽象工廠模式。說的更明白一點,就是一個繼承體系中,如果存在著多個等級結構(即存在著多個抽象類),并且分屬各個等級結構中的實現類之間存在著一定的關聯或者約束,就可以使用抽象工廠模式。假如各個等級結構中的實現類之間不存在關聯或約束,則使用多個獨立的工廠來對產品進行創建,則更合適一點。
- 前言
- 第一章 設計七大原則
- 第1節 開閉原則
- 第2節 依賴倒置原則
- 第3節 單一職責原則
- 第4節 接口隔離原則
- 第5節 迪米特法則
- 第6節 里氏替換原則
- 第7節 合成復用原則
- 第二章 簡單工廠模式
- 第1節 使用場景
- 第2節 示例代碼
- 第三章 創建者模式
- 第1節 工廠方法模式
- 第2節 抽象工廠模式
- 第3節 建造者模式
- 第4節 原型模式
- 第5節 單例模式
- 第四章 結構型模式
- 第1節 適配器模式
- 第2節 橋接模式
- 第3節 組合模式
- 第4節 裝飾者模式
- 第5節 外觀模式
- 第6節 享元模式
- 第7節 代理模式
- 第五章 行為模式
- 第1節 責任鏈模式
- 第2節 命令模式
- 第3節 迭代器模式
- 第4節 中介者模式
- 第5節 備忘錄模式
- 第6節 觀察者模式
- 第7節 狀態模式
- 第8節 策略模式
- 第9節 模板方法模式
- 第10節 訪問者模式
- 第11節 解釋器模式