文章目錄
- 1.工廠(方法)模式
- 1.1.簡單工廠模式(不是設計模式,是編程習慣)
- 1.2.工廠方法模式(企業開發中最常見)
- 1.3.抽象工廠模式
- 2.策略模式
- 2.1.登錄案例(工廠模式+策略模式)
- 3.責任鏈設計模式
- 4.單點登錄怎么是實現的?
- 5.權限認證是如何實現的
- 6.上傳數據的安全性你們怎么控制?
- 7.你負責項目的時候遇到了哪些比較棘手的問題?怎么解決的?
- 8.你們項目中日志怎么采集的
- 9.查看日志的命令
- 10.生產問題怎么排查
- 11.怎么快速定位系統的瓶頸
你之前項目中用過設計模式嗎?

需求:設計一個咖啡店點餐系統。
設計一個咖啡類(Coffee),并定義其兩個子類(美式咖啡【AmericanCoffee】和拿鐵咖啡【LatteCoffee】);再設計一個咖啡店類(CoffeeStore),咖啡店具有點咖啡的功能。具體 類圖設計如下:


上面的對象都是new出來的,耦合情況比較嚴重,如果需要更換對象,所有new 的地方都要修改,違背了軟件開發的開閉原則。
開閉原則:擴展開放,對修改關閉(對程序進行擴展的時候,不能修改原有的代碼,需要一個熱插拔的效果,那這個怎么解決?通過工廠模式解決,如果需要更換對象,直接更換工廠里面的對象即可,達到對象解耦的目的)
工廠設計模式:解耦
1.工廠(方法)模式
工廠方法模式分類
- 簡單工廠模式(不是設計模式,是編程的習慣)
- 工廠方法模式
- 抽象工廠模式
1.1.簡單工廠模式(不是設計模式,是編程習慣)
簡單工廠包含如下角色:
- 抽象產品 :定義了產品的規范,描述了產品的主要特性和功能。
- 具體產品 :實現或者繼承抽象產品的子類
- 具體工廠 :提供了創建產品的方法,調用者通過該方法來獲取產品。
SimpleCoffeeFactory:解除了coffee store 和 coffer 實現類的耦合,又產生新的耦合,coffeeStore 和 SimpleCoffeeFactory 之間的耦合,SimpleCoffeeFactory 和 coffee 之間的耦合,如果后面添加新的咖啡,需要修改SimpleCoffeeFactory 則違反了開閉原則。怎樣解決呢?工廠方法模式。
1.2.工廠方法模式(企業開發中最常見)
工廠方法模式可以完美解決上面的問題。
工廠方法模式的主要角色:
抽象工廠(Abstract Factory):提供了創建產品的接口,調用者通過它訪問具體工廠的工廠方法來創建產品。
具體工廠(ConcreteFactory):主要是實現抽象工廠中的抽象方法,完成具體產品的創建。
抽象產品(Product):定義了產品的規范,描述了產品的主要特性和功能。
具體產品(ConcreteProduct):實現了抽象產品角色所定義的接口,由具體工廠來創建,它同具體工廠之間一一對應。
CoffeeFactory:抽象工廠,定義了工廠方法,創建產品的規范
AmericanCoffeeFactory、LatteCoffeeFactory:具體工廠,創建具體的產品
CoffeeStore:不同的工廠創建不同的產品對象
優點:
- 用戶只需要知道具體工廠的名稱就可得到所要的產品,無須知道產品的具體創建過程;
- 在系統增加新的產品時只需要添加具體產品類和對應的具體工廠類,無須對原工廠進行任何修改,滿足開閉原則;
缺點:
- 每增加一個產品就要增加一個具體產品類和一個對應的具體工廠類,這增加了系統的復雜度。
1.3.抽象工廠模式
工廠方法模式只考慮生產同等級的產品,抽象工廠可以處理多等級產品的生產
產品族(品牌):一個品牌下面的所有產品;例如華為下面的電腦、手機稱為華為的產品族;
產品等級(分類):多個品牌下面的同種產品;例如華為和小米都有手機電腦為一個產品等級;
抽象工廠模式:是工廠方法模式的升級版本,工廠方法模式只生產一個等級的產品,而抽象工廠模式可生產多個等級的產品。一個超級工廠創建其他工廠。該超級工廠又稱為其他工廠的工廠
-
現咖啡店業務發生改變,不僅要生產咖啡還要生產甜點
- 同一個產品等級(產品分類)
- 咖啡:拿鐵咖啡、美式咖啡
- 甜點:提拉米蘇、抹茶慕斯
-
同一個風味,就是同一個產品族(相當于同一個品牌)
- 美式風味:美式咖啡、抹茶慕斯
- 意大利風味:拿鐵咖啡、提拉米蘇
優點:當一個產品族中的多個對象被設計成一起工作時,它能保證客戶端始終只使用同一個產品族中的對象。(