[討論] Pub/Sub vs Observer Pattern

看板Soft_Job作者 (jason)時間7年前 (2017/01/05 09:00), 7年前編輯推噓46(5913127)
留言199則, 50人參與, 最新討論串1/3 (看更多)
感謝 pttuser 大 這麼認真回覆我的"觀察者模式" 我只好發一篇討論一下 正文: 我知道有些會說 Pub/Sub 與 Observer 不同 有些說 兩種 pattern 根本不同層面 一個是網路導向架構 一個只是物件導向的實做 一個是 async 一是 sync ..等 如 Stackoverflow https://goo.gl/qRUQOK 但是很抱歉 Observer Pattern 的確就是 Pub/Sub Pattern 這不是自我感覺良好 講話要有根據的 首先,昨晚回覆過的 GoF 原著就說了 Observer 別名 就是 Publish/Subscribe http://i.imgur.com/4l7B6P7.jpg
GoF 設計模式 ,相信早已是必讀聖經 他們著作就是這樣寫 你要說他們錯,另起爐灶,我也是佩服 但是,我也不是說 async/sync 的觀點錯誤 在不同時空背景,不同語言... 的狀況下 Pub/Scribe 運用在不同的領域 意義當然不一樣 簡直就像拿明朝的劍,斬清朝的官一般 良葛格也說過 技術名詞紛爭多 https://goo.gl/MkqlMx 學的是模式的原理與精髓 這些名詞理應是拿來溝通 方便吸收理解 不是拿來給您裝逼的 另外,您說我只會死讀書翻譯 那我蠻開心的 起碼我有花時間在這塊 並非口說無憑 我反而懷疑,您是否有實務開發經驗? 實務中,這些模式並沒有限制做法 反而都會變形與結合 從來沒有人說 Observer 只能用 sync 或 async 其根本,的確就是「發佈-訂閱」的概念 最後 以下這些書籍也都是相同論點 不知您是否還認為,只有自己正確呢? 設計模式之禪 http://i.imgur.com/VaawqKz.jpg
GoF原文中譯 http://i.imgur.com/ARCZcdv.jpg
品味Java的21種設計模式 http://i.imgur.com/QfYJWMS.jpg
大話設計模式 http://i.imgur.com/3DG8Udu.jpg
設計模式 http://i.imgur.com/XvvOVUE.jpg
深入淺出設計模式 http://i.imgur.com/5tfrgVj.jpg
謝謝指教 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.72.156.63 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1483578056.A.A2A.html ※ 編輯: Jasonzheng (42.72.156.63), 01/05/2017 09:03:01

01/05 09:15, , 1F
去看看aws等大廠怎麼作pub/sub的啦,看看現在實作的產品
01/05 09:15, 1F

01/05 09:15, , 2F
怎麼區別pub/sub和observer吧
01/05 09:15, 2F

01/05 09:15, , 3F
好痛
01/05 09:15, 3F

01/05 09:17, , 4F
哈哈哈 好腫
01/05 09:17, 4F

01/05 09:18, , 5F
好多書喔XD
01/05 09:18, 5F
買書月光族...

01/05 09:18, , 6F
推推
01/05 09:18, 6F

01/05 09:18, , 7F
再不濟就去參加pycon or jcconf這種entry level型的討論
01/05 09:18, 7F

01/05 09:18, , 8F
看看現實生活中實作面為何盡量區分兩者的不同
01/05 09:18, 8F

01/05 09:19, , 9F
我是不了解這個技術 但p大火氣也太大了吧 人家好心分享
01/05 09:19, 9F

01/05 09:19, , 10F
如果覺得有誤 就好好討論 拼命噓做啥...
01/05 09:19, 10F

01/05 09:20, , 11F
一天到晚只會糾結名詞,現實實作中早已經把兩者分開談了
01/05 09:20, 11F

01/05 09:20, , 12F
ww
01/05 09:20, 12F

01/05 09:21, , 13F
糾結名詞的是誰啊
01/05 09:21, 13F

01/05 09:22, , 14F
還好痛咧,我是擔心哪天某個新人被要求作pub/sub,結果
01/05 09:22, 14F

01/05 09:22, , 15F
看你的文章寫出sync observer結果下場就很慘了
01/05 09:22, 15F

01/05 09:23, , 16F
你的文章有講到async和sync差別?新人光看你文章只會被你
01/05 09:23, 16F

01/05 09:23, , 17F
誤導就是sync
01/05 09:23, 17F
ok 的確有可能 ((雖然我一再強調 Observer 沒有 sync 規範... 我稍晚會在補充進內文 以免誤導他人 謝大大指教^^

01/05 09:25, , 18F
真是笑話,這種實際面早已區分的作法居然被你混為一談
01/05 09:25, 18F
敝人認為 其實就只是名詞重用 並非混為一談 內文討論的範疇 就是 Observer 無誤

01/05 09:27, , 19F
發一篇文章來讓大家看看你的觀點阿
01/05 09:27, 19F

01/05 09:30, , 20F
冷靜冷靜,討論不要生氣
01/05 09:30, 20F

01/05 09:34, , 21F
叫我寫就寫?你哪根蔥?林北要來gdb了不陪你們練校話
01/05 09:34, 21F

01/05 09:35, , 22F
看起來跟腦羞有87%像
01/05 09:35, 22F

01/05 09:36, , 23F
那我只好放個激醬了 寫不出來只好噓
01/05 09:36, 23F

01/05 09:36, , 24F
你要牛肉還是豬肉?
01/05 09:36, 24F

01/05 09:37, , 25F
哈哈哈 惱羞成怒囉 講不出東西來就顧左右而言他 裝忙XD
01/05 09:37, 25F

01/05 09:38, , 26F
林北是不用上班膩?當我跟你們一樣都是學生嗎
01/05 09:38, 26F
小弟開工中 晚上再補充~

01/05 09:38, , 27F
不懂在那邊裝懂 被打臉了就假裝要上班沒空 哈哈
01/05 09:38, 27F

01/05 09:38, , 28F
一大早火氣就這麼大,也是不簡單
01/05 09:38, 28F

01/05 09:38, , 29F
我也有上班呀 只是不會閒到可以一直噓而已
01/05 09:38, 29F

01/05 09:41, , 30F
過度探討名詞解釋是不健康的
01/05 09:41, 30F
沒錯..爭名詞超沒意義阿阿啊

01/05 09:42, , 31F
如果這麼忙,怎麼有時間一直噓
01/05 09:42, 31F

01/05 09:43, , 32F
最喜歡看論戰了
01/05 09:43, 32F

01/05 09:53, , 33F
我偏向支持pttuser. observe pattern 只有1對多.
01/05 09:53, 33F

01/05 09:54, , 34F
但pub/sub是可以多對多的概念.
01/05 09:54, 34F
還有 125 則推文
還有 15 段內文
01/05 18:52, , 160F
其實userptt講了應該用產品決定設計模式
01/05 18:52, 160F

01/05 19:09, , 161F
推分享。設計模式重要的是它的精神,而不是死板板的說怎樣
01/05 19:09, 161F

01/05 19:09, , 162F
怎樣寫才是什麼什麼模式。
01/05 19:09, 162F

01/05 19:14, , 163F
推分享,但某人學到走火入魔了
01/05 19:14, 163F

01/05 19:14, , 164F
真的有料 就不會用那種態度這樣討論設計模式 有的大概只是
01/05 19:14, 164F

01/05 19:14, , 165F

01/05 19:15, , 166F
重構—向範式前進 第28頁。
01/05 19:15, 166F

01/05 19:15, , 167F
半點料 然後就自以為是 看那種狂噓人家的風格 是有多自卑
01/05 19:15, 167F

01/05 19:16, , 168F
雖然這裡主要是講結構圖,但其實就是指同樣的設計模式並不
01/05 19:16, 168F

01/05 19:16, , 169F
會只有一種實作方法。
01/05 19:16, 169F

01/05 19:18, , 170F
本來就是心法的東西 大觀念樓主也沒寫錯啥 硬要在那邊爭 所
01/05 19:18, 170F

01/05 19:18, , 171F
以我說走火入魔了 心已經容不下任何東西了 寫code寫到這樣
01/05 19:18, 171F

01/05 19:19, , 172F
也是蠻悲哀的
01/05 19:19, 172F

01/05 19:25, , 173F
設計模式是拿來跟人溝通、改善程式、解決問題用的,不是拿
01/05 19:25, 173F

01/05 19:25, , 174F
來死背名稱用的。
01/05 19:25, 174F

01/05 19:30, , 175F
要戰就發一篇,推文不易追蹤。
01/05 19:30, 175F

01/05 19:36, , 176F
吵什麼 design pattern 名字實在很無聊
01/05 19:36, 176F

01/05 23:11, , 177F
程式能動比啥都重要
01/05 23:11, 177F

01/05 23:28, , 178F
xD 能不能反射性地用出來才是關鍵
01/05 23:28, 178F

01/06 08:18, , 179F
私心求pttuser發一篇幫助我們了解,小弟只能p幣贊助
01/06 08:18, 179F

01/06 09:14, , 180F
糾結名詞真的有差嗎?理解後能靈活運用才是重要的。
01/06 09:14, 180F

01/07 10:01, , 181F
糾結在名詞 狂噓人
01/07 10:01, 181F

01/07 17:28, , 182F
我認為pub/sub在程式及時間上解藕發佈與接收者,一般講觀
01/07 17:28, 182F

01/07 17:28, , 183F
察者並不會要求你做個中間人來分離這兩者,我想pttuser
01/07 17:28, 183F

01/07 17:28, , 184F
對於你將兩者說成是一樣東西不能認同原因也在此。
01/07 17:28, 184F

01/07 17:30, , 185F
當然你可以說我的觀察者模式通常還會放個中間人做異步,
01/07 17:30, 185F

01/07 17:30, , 186F
我的發佈訂閱也不一定非同步。就好像我牛肉炒飯通常改用
01/07 17:30, 186F

01/07 17:30, , 187F
豬肉還芶芡,我豬肉燴飯有時候不芶芡。
01/07 17:30, 187F

01/07 17:43, , 188F
討論的時候求名詞精確 其實是好事 實作時當差不多先生的
01/07 17:43, 188F

01/07 17:43, , 189F
只是把債延後還
01/07 17:43, 189F

01/07 17:49, , 190F
其實觀察者一直都可用中間人啦...
01/07 17:49, 190F

01/07 17:50, , 191F
而且這不是我差不多先生 或是 「反正抽象、彈性」
01/07 17:50, 191F

01/07 17:51, , 192F
而是 原著就有提到這樣的用法喔
01/07 17:51, 192F

01/07 17:52, , 193F
但原著有提到 這是借鑒了 mediator 模式的觀念
01/07 17:52, 193F

01/07 17:53, , 194F
因此我當初撰文時並未補充
01/07 17:53, 194F

01/07 17:55, , 195F
而是想在未來的文中提及
01/07 17:55, 195F

01/07 17:56, , 196F
很抱歉..我的疏失造成各位誤會
01/07 17:56, 196F

01/07 17:56, , 197F
我這陣子會再補充進內文
01/07 17:56, 197F

01/10 23:29, , 198F
我沒說你是唷 別亂坐 XD 有人整理分享激發討論 我都很感
01/10 23:29, 198F

01/10 23:29, , 199F
激的
01/10 23:29, 199F
文章代碼(AID): #1ORPh8eg (Soft_Job)
文章代碼(AID): #1ORPh8eg (Soft_Job)