作者lovdkkkk (dk)
看板Soft_Job
標題Re: [討論] Pub/Sub vs Observer Pattern
時間Sat Jan 14 21:59:08 2017
新春廢文鉅獻 (殺小?)
首先說在前面,
個人對原 PO 一開始發文的動機非常有同感,
【在看到許多網路教學,
有許多謬論或避重就輕、模稜兩可
(ex: 講不清楚,就扯到另一原則)】
這段話當初一看到超級心有七七煙的,
舉幾個實例
1. 前陣子看到一篇前端教學某段話
【用 SPA 會有 XXX 問題, 改用 AJAX 可以改善】
可是他說的其實是
兩種不同的實現 SPA 的做法
用 AJAX 還是 SPA 啊...
2. 這篇 【資料科學家最常使用的十大演算法】 的原文
http://www.kdnuggets.com/2016/09/poll-algorithms-used-data-scientists.html
縮
https://goo.gl/RJ3XhN
光看第一個表格就好, 做演算法使用量排名?
可是 第二名列的是 分群 (演算法的大項)
但第二名之後
有好幾個是 做分類的各種演算法 (大項中的各種方法)
所以是? 第三名起 N 個做分類的方法加起來
還不夠讓 分類 這個大項進榜?
那五摳寧~
這樣不同階層的東西放在一起排名次...
還是看似機器學習的專門網站的編輯的專文...
至於這需不需要深入探究呢?
看你的出發點 目的 和由什麼角度來看,
若是個人自己方便理解記憶, 或只是要能做出來達到效果,
那無所謂, 自己方便就好
假如目的是【與人溝通】, 甚至 【教學】,
個人是覺得自己從嚴看待比較好
回原文
Pub/Sub 與 Observer
它們效果是相同的
B 也就是 Sub可以用某種方式
得到 A 或說 Pub 想給它的訊息
但是它們的那個 "某種方式" 就可能有差
Pub/Sub 很明白就是有個 發佈 與 接收 的機制
於是會有中介的管理者
Observer 就 "不一定" 是什麼方式,
另外像 Event Driven,
那就是明確有個 "Event" 的規格在,
一定要做出一個 Event 的樣子的東西出來
這有什麼影響呢?
就是明確程度的不同,
以及對規格的直觀的想法不同
當說到 Pub/Sub 時, 很自然的可以想像,
應該會有一組 Publish/Subscribe 的 API,
然後丟進去的八成都是字串 JSON XML 之類的
當說到 Event Driven 時,
大概可以猜到會有個
XXXEvent.create(各種, 建立用的, 參數)
或者 new XXXEvent("肚子餓了的 Event")
然後會有個 fire, 有個 onXXXEvent
而不同的 Event 大概會提供各種提取參數的 API
能拿的很可能是多種型態的值
而說到 Observer...嗯嗯, 實作不明 QQ
可以直接塞一個參考過去給人 call
也可以用 Pub/Sub 做到效果,
不過 Pub/Sub 本身,
更像是 Pub/Middle 與 Middle/Sub 構成兩組/多組 Observer
總之,
如果只想表達 "這一種效果" 時,
說什麼可能差不到哪去,
但想要更明確表達 "某種規格 架構 或實作方式" 時,
可能就不能那樣 "差不多" 了
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.226.164.233
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1484402351.A.FA6.html
1F:推 jete: 那個網頁應該因為DT/knn/RF可用在分類也可用在回歸的關係才 01/14 22:10
2F:→ jete: 這樣分的吧也許 倒是回歸自成一項變得比較奇怪 01/14 22:11
3F:→ lovdkkkk: 如果是那樣就不要列大項 (分群) 都列實際方法就好惹 @@ 01/14 22:12
4F:推 stosto: 概念其實可以分類 但實作上有可能差很多 01/15 03:46
5F:→ stosto: DP重的應該是精神, 但是太多人太執著細節 01/15 03:47
6F:→ lovdkkkk: 嗯嗯, 我是覺得這就像 C 要做 queue 01/15 07:39
7F:→ lovdkkkk: 可以用 array 做, 可以用 struct+指標做 01/15 07:39
8F:→ lovdkkkk: 概念上就是個 queue, 但不同實作 也不能說他們一樣這樣 01/15 07:40
9F:→ robler: 能用合理的效率解決問題不就好了嗎 怎麼實作各有巧思阿 01/15 11:23
10F:→ robler: 我比較希望有人想出不同的實作方式可以分享一下 01/15 11:23
11F:→ robler: 不是在那裡嗆說 你這個根本不算是XXX 01/15 11:23
12F:→ lovdkkkk: 主要是, 如果目的在教學, 那重點就不只是效果 01/15 13:33
13F:→ lovdkkkk: 還包括幫人建立思路跟認知模型 01/15 13:34
14F:→ lovdkkkk: 就好比市面一堆演算法的書 或各種語言技術的書 01/15 13:35
15F:→ lovdkkkk: 講的東西都是同一套, 但章節編排 說明方式 圖表 舉例 01/15 13:36
16F:→ lovdkkkk: 就會產生好不好吸收 吸收後容不容易應用的差別 01/15 13:37