Gab*_*mas 13 oop design-patterns
我必须做的一个设计DownloadManager,但我的主要问题是关系到一个通知Download可以发送到DownloadManager像onUpdate()更新进度条,onError(),onFinish(),等不知不觉中,这些DownloadManager具有从其收到此通知Download秒.
我想过两种可能的方法:
观察者模式
基本上有1个Observable和N Observers.在我的情况下,DownloadManager有一个Observer和下载Observables,因此关系是N Observables 1 Observer,恰恰相反.
优点是将所有可能的通知集中在一个方法中,来自Observers 的notify()or update()(from java)方法,在我的例子中只有DownloadManager.我可以使用通知代码将参数传递给notify()方法.
坏处?我正在使用oop模式来完成一个可以通过回调轻松完成的事情.此外,N观察者1观察者它是奇怪的,至少对于观察者模式,因为这个模式是为1个可观察的N个观察者完成的,所以我真的不会使用观察者模式.
打回来
与观察者模式非常相似.DownloadManager实现了一个"监听器"(接口).此侦听器实现onFinish(),onUpdate()等通知函数.然后,此侦听器必须在所有下载中注册,因此当下载完成时,它将调用listener.onFinish().另外,我可以从下载中将参数传递给此方法,就像在观察者模式中一样.
优点:易于使用.缺点:没有.
我可能会使用回调,因为在我看来,对一个观察者N观察者使用观察者模式是没有意义的.
而你,哪个选项会用?
回调 FTW。它更简单,并且在绝大多数情况下,简单性会以积极的方式影响项目的每个其他方面,包括开发、调试、优化、文档记录和进一步维护。