Re: [問題] 程式寫法請教

作者: givemepass (λ)   2014-11-03 00:42:15
※ 引述《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
貓眼大講的跟我的通知其實可以說是不衝突 兩種方式是可以並存的
作者: zxc190 (卡卡)   2014-11-03 00:46:00
推熱心!
作者: tga123 (叛帝)   2014-11-03 01:08:00
推神機3310

Links booklink

Contact Us: admin [ a t ] ucptt.com