[Design Pattern] 橋接器模式 Adapter Pattern

Adapter => 我不會講台語 透過媽媽當翻譯 間接跟阿公溝通 

              => 媽媽就是 Adapter = 橋接器

 

什麼情況下用的到?

前提: 我想用一樣的方式操作所有東西

要解決的問題: 目標不好用、為了降低與目標的藕合、目標還在開發中可能一直變、我得一直配合他改......

...繼續閱讀 »

[Design Pattern] 觀察者模式 Observer Pattern

觀察者模式 => 我訂閱了一個東西 當他發生變化時 希望他可以通知我 = 執行我肚子的函式

 

所以可知這個Pattern裡面一定有些東西

1. 有一個集合 => 存哪些人訂閱我 => 當我有變化時我才知道要通知誰

2. 訂閱者的是 '被通知的' => 粉絲肚子裡的函式被粉專呼叫

                                        => 當粉專有新貼文時 由粉專通知所有粉絲

3. 通知的方法是粉專來執行所有粉絲肚子裡的某一個函式

...繼續閱讀 »

[Design Pattern] 外觀模式 Facade Pattern

外觀模式 => 把很多子系統包起來 => 對外統一呼叫我就好

 

假設公司內部很亂 每個部門開發自己的子系統

但每件需求一定都是跨部門發生 所以我總得先Call A 部門的程式、再 B 部門的程式、再 C 部門的程式

但實際上怎麼用其他部門的程式都是固定的 我想把他們包裝起來

 

...繼續閱讀 »

[Design Pattern] 代理模式 Proxy Pattern

Proxy => 透過代理 (Proxy) 間接操作真實物件

          => 強調間接性 => 大家都透過 Proxy '間接' 碰真實物件 => 所以所有行為都可以被 Proxy 掌控

也因此什麼時後需要用到 Proxy ?

1. 我想隱藏真實物件到底是誰 

2. 因為是透過 Proxy 間接操作 所以可以在 Proxy 中自己再做一些加工 例如 Cache, 權限, 其他...

...繼續閱讀 »

[C#] 委派 Delegate 與 Lambda

  • 9593
  • 0
  • C#
  • 2018-04-14

委派 Delegate

講的簡單一點 他就像一個轉接頭

你充 iphone 需要轉接頭 但轉接頭的兩端能插什麼線是固定的

你買了 Type-C 的線 就不可能插進 Micro USB 的孔

但也就是說 只要是插的進去的線 就都可以讓你充電

今天你有錢可以用原廠的線 明天比較窮就用夜市牌的

反正只要插的進轉接器 就是可以用的線

...繼續閱讀 »

[Task - 2] Wait 與 ContinueWith

  • 29915
  • 0
  • C#
  • 2018-04-09

前面我們看過了 Task 幾種使用方法

那如果今天我們想要的是

1. 三個好友同時搶廉航機票,只要任一人搶成功,就可以成行

=> Task.WaitAny

2. 三個好友同時從起點出發,全部都抵達終點才算獲勝

=> Task.WaitAll

3. 三個好友接力賽跑,A 跑完才能換 B,B 跑完才能換 C

=> ContinueWith

...繼續閱讀 »

[Task - 1] 使用 Task 的各種方式

  • 30424
  • 0
  • C#
  • 2018-04-09

在比較久以前的.NET Framework版本 大家可能直接操作過Thread

一言以蔽之 在絕大部份情況下

建議大家使用 Task 取代 Thread

 

再一個問題

前面我們討論過 Parallel,當然我們也可以同時 new 很多 Task,讓結果就像是 Parallel

那我該選擇哪個?

一言以蔽之 在絕大部份情況下

建議大家用 Parallel 取代 多個 Task

...繼續閱讀 »

[平行處理 - 1] Parallel.ForEach

  • 4853
  • 0
  • C#
  • 2018-04-09

假設媽媽跟你說 今天晚上九點時 你有三件事要做

1. 掃地 2. 洗澡 3. 洗碗

因為這三件事並不存在先後關係 所以哪件先做都可以

而聰明如你一定會想 如果我可以同時掃地、洗澡、洗碗一起做

那不是就太好了嗎

...繼續閱讀 »

[報表程式 - 1 ] 單一觸發點

常常我們有一些撈報表資料的需求

我們需要從資料庫裡撈出一些符合某種情況的資料 (觸發點)

然後再根據這些資料 去衍生出更多資料 (來自更多其他的資料表)

再把所有資料拿來做一些計算

最後組裝成我們要的結果

並且以不同的方式進行呈現 (也許寫出成檔案)

...繼續閱讀 »

[控制反轉]以Mock進行Unit Test為例

大家寫程式寫一陣子以後就會開始聽到一些名詞

控制反轉(Inversion of Control,縮寫為IoC)

相依性注入(Dependency Injection,簡稱DI)

也許再加上很久以前也許就沒認真搞懂的介面 (Interface)

關於這些東西到底是什麼意思 我想中文解釋大家都會背

但我可能就是搞不懂 到底把程式搞這麼複雜有什麼好處?

原本的程式也跑得很好 為什麼大家總是說得這樣寫才好?

 

我想用最簡單的例子來做個說明

...繼續閱讀 »