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 的第一課都是簡單工廠
因為它簡單又好用
今天學會 明天馬上用得到
承上題 [報表程式 - 3] 多個觸發點+多種資料來源 => ViewModel
再假設最後我們發現每個觸發點中,連組裝資料的邏輯都完全各走各的了
所以 BaseEvent 只剩下流程控制與共用類別、參數宣告的功能
除此之外都不能共用了,都會寫在各自的 Event.cs 中
上題雖然有兩個觸發點 (出站+進站) 但都來自同一張LOT_TXN 過站記錄
那假設我們今天有第三種事件 卻來自另一張表 (SNAP 快照 指的是只有每個貨批當下最新的一筆資料)
但其實三個事件間邏輯都是類似的 我們該怎麼處理呢
承上題 [報表程式 - 1] 單一觸發點
今天我們稍微把上次的例子做個變化
1. 當報進站事件 ( MoveIn ) => 數量 (Qty) 都要 +1
2. 當報出站事件時 ( MoveOut ) => 數量 (Qty) 都要 -1
但除此之外,其他欄位邏輯都相同
常常我們有一些撈報表資料的需求
我們需要從資料庫裡撈出一些符合某種情況的資料 (觸發點)
然後再根據這些資料 去衍生出更多資料 (來自更多其他的資料表)
再把所有資料拿來做一些計算
最後組裝成我們要的結果
並且以不同的方式進行呈現 (也許寫出成檔案)