Adapter => 我不會講台語 透過媽媽當翻譯 間接跟阿公溝通
=> 媽媽就是 Adapter = 橋接器
什麼情況下用的到?
前提: 我想用一樣的方式操作所有東西
要解決的問題: 目標不好用、為了降低與目標的藕合、目標還在開發中可能一直變、我得一直配合他改......
Adapter => 我不會講台語 透過媽媽當翻譯 間接跟阿公溝通
=> 媽媽就是 Adapter = 橋接器
什麼情況下用的到?
前提: 我想用一樣的方式操作所有東西
要解決的問題: 目標不好用、為了降低與目標的藕合、目標還在開發中可能一直變、我得一直配合他改......
觀察者模式 => 我訂閱了一個東西 當他發生變化時 希望他可以通知我 = 執行我肚子的函式
所以可知這個Pattern裡面一定有些東西
1. 有一個集合 => 存哪些人訂閱我 => 當我有變化時我才知道要通知誰
2. 訂閱者的是 '被通知的' => 粉絲肚子裡的函式被粉專呼叫
=> 當粉專有新貼文時 由粉專通知所有粉絲
3. 通知的方法是粉專來執行所有粉絲肚子裡的某一個函式
外觀模式 => 把很多子系統包起來 => 對外統一呼叫我就好
假設公司內部很亂 每個部門開發自己的子系統
但每件需求一定都是跨部門發生 所以我總得先Call A 部門的程式、再 B 部門的程式、再 C 部門的程式
但實際上怎麼用其他部門的程式都是固定的 我想把他們包裝起來
Proxy => 透過代理 (Proxy) 間接操作真實物件
=> 強調間接性 => 大家都透過 Proxy '間接' 碰真實物件 => 所以所有行為都可以被 Proxy 掌控
也因此什麼時後需要用到 Proxy ?
1. 我想隱藏真實物件到底是誰
2. 因為是透過 Proxy 間接操作 所以可以在 Proxy 中自己再做一些加工 例如 Cache, 權限, 其他...
策略模式 => 我希望用戶只認識我 連實際他的需求是哪個子類別在做都不要知道
考量前一篇 簡單工廠時 用戶端叫用的程式碼為
static void Main(string[] args)
{
Housework housework = HomeworkFactory.CreateHousework("掃地");
housework.Do();
}
簡單工廠模式 => 幫我選擇出用戶實際要用的是哪個子類別
99.99 的人學 DP 的第一課都是簡單工廠
因為它簡單又好用
今天學會 明天馬上用得到