劉:https://www.bilibili.com/video/BV1kG411g7h4
https://www.bilibili.com/video/BV1jyreYKE8z
1. 單例模式
2. 簡單工廠模式
- 代碼邏輯:
- 原始:業務邏輯層 —> 基礎類模塊
- 工廠:業務邏輯層 —> 工廠模塊 —> 基礎類模塊
- 業務層和基礎類解耦
- 思路:業務層不再直接創建對象,而是調用工廠創建對象,創建對象的細節也在工廠中實現,減輕業務層的壓力。
- 一個工廠創建的所有對象都有共同的父類,工廠的返回值就是父類指針,父類指針指向子類對象。
- 優缺點:適用于創建對象較少的情況,違反了開閉原則。
- 開閉原則:應用程序實體(類、模塊、方法等)應該對擴展開放但對修改關閉。 換句話說,需要在不更改現有代碼的情況下向應用程序添加新功能。
3. 工廠方法模式
- 簡單工廠模式+開閉原則=工廠方法模式。
- 思路:不再只有一個工廠。現在有一個抽象工廠,要創建某個對象就實例化一個對應的具體工廠來創建對象。
- 優缺點:遵守了開閉原則,每新增一個產品就要新增一個工廠,類的數量太多。
4. 抽象工廠模式
- 用的不多,作用是減少工廠類的數量。
- 思路:不再是一個產品一個工廠,而是一個產品族是一個工廠。例如,一個中國工廠,可以生產中國蘋果、中國香蕉和中國梨子,如果你想要日本蘋果,那還要創建日本工廠。一個產品等級結構是一類產品,例如蘋果。https://www.bilibili.com/video/BV1Je4y1b7j9
- 新增產品族(工廠)很簡單,符合開閉原則,但新增產品等級結構很麻煩,不符合開閉原則。