看板 AndroidDev 關於我們 聯絡資訊
※ 引述《lovelycateye (我還想要更多力量)》之銘言: : 原文吃光光~ : 1.DialogInterface.OnClickListener 本身就是你所謂的觀察者模式的實踐(監聽者模式) : 如果原本就是空的,沒必要在這之上加上一層多餘的 Interface : 2.沒必要存下來的東西就不要特別存下來, : 一來增加不懂的人誤用的機率, : 二來萬一這物件重複使用又要很小心的控制裡面的成員變數狀態, : 所以不需要用 new 起來再包一層的方式。 : 3.同樣的 AlertDialog 要重複利用時,已經建立起來後,就把它存起來。 : 直接呼叫 show() 顯示即可,不要每次都重新建立。 : 4.可以考慮多多善用 Overload 的方式,避免撰寫重複的程式碼。 : 請參考:https://gist.github.com/anonymous/612848de46c2930f5263 我想貓眼大可能誤會了 我在回文上有註記 "這樣就是一個簡單的callback 但是只有對一個註冊有效 後面還有很多變化 例如可以獨立出一個類別專門讓人在註冊 當所有註冊的物件 在某些事情發生變化的時候 就可以群體通知 當然android你也可以用廣播來完成 (如果需要我在寫一個範例for多個註冊的) 這也是一種設計模式 叫做"觀察者模式" " 這邊說明用途是用在通知 是想要讓後續更有彈性 當然不是說你的方法不好 你的方法是正確的 在專案上處理都是混搭著用 Dialog會額外開一個Helper跟你敘述的是相同的 另外還會多開一個Listener通知中心類別 用來監控所有Dialog所修改的資料 這時候Listener就可以發揮很強大的功能了 至於你說的這四點 我想平反一下 : 1.DialogInterface.OnClickListener 本身就是你所謂的觀察者模式的實踐(監聽者模? : 如果原本就是空的,沒必要在這之上加上一層多餘的 Interface 基本上AlertDialog的OnClickListener沒有彈性了 他只能傳入dialog跟int which, 萬一你想傳物件 想傳陣列 那是否只能自己在寫一個listener : 2.沒必要存下來的東西就不要特別存下來, 這邊應該是指dialog? 還是listener物件? 如果是listener 你的做法也是new一個listener進去 應該沒什麼不同 :D : 一來增加不懂的人誤用的機率, 不懂的人誤用? 這邊會誤用是指? : 二來萬一這物件重複使用又要很小心的控制裡面的成員變數狀態, : 所以不需要用 new 起來再包一層的方式。 這段其實我真的看不太懂 觀察者模式只有註冊 註銷兩種使用方式而已 寫好以後應該是不會讓使用的人去控制裡面 : 3.同樣的 AlertDialog 要重複利用時,已經建立起來後,就把它存起來。 : 直接呼叫 show() 顯示即可,不要每次都重新建立。 但是想像一個情境 A, B, C三個頁面都存在使用者名稱 這時候A呼叫AlertDialog 修改姓名, B跟C都要被通知即時更新 這時候就需要Listener來通知了! : 4.可以考慮多多善用 Overload 的方式,避免撰寫重複的程式碼。 看情況! 基本上原生的彈性不夠, 所以我會走最原始的路, 也就是自己寫 就像我不會去用ArrayAdapter或者SimpleAdapter來製造ListView是一樣的道理。 其實後來看了一下 我沒有對原po的AlertDialog做到改善 避免多生成許多Dialog 只是提供一個通知的方式給他而已XD 貓眼大講的跟我的通知其實可以說是不衝突 兩種方式是可以並存的 -- posted from android bbs reader on my Nokia 3310 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.115.103.22 ※ 文章網址: http://www.ptt.cc/bbs/AndroidDev/M.1414946540.A.2BB.html
zxc190: 推熱心! 11/03 00:46
tga123: 推神機3310 11/03 01:08