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