在这里发布的代码有点太多了,所以我会发布github链接:
来自PhotoTask
班级的评论:
此类管理
PhotoDecodeRunnable
和PhotoDownloadRunnable
个对象。它没有执行下载或解码;相反,它管理执行工作的任务的持久存储。它通过实现下载和解码类定义的接口,然后将自身作为参数传递给下载或解码对象的构造函数来实现。实际上,这允许PhotoTask在线程上启动,在委托对象中运行下载,然后运行解码,然后重新开始。这个类可以合并并在必要时重用。
评论将PhotoTask
视为"管理任务的持久存储"。这是代表模式吗?我很欣赏你对这些课程和模式的任何了解。
答案 0 :(得分:1)
PhotoManager
使用Object Pool模式,或者更具体地说是Thread Pool,因为它创建,管理和重用池中的线程实例。
Runnable
类通常使用Command pattern,这是通过封装方法调用来模拟没有函数指针的委托的方法。
PhotoTask
使用多个runnable并实现其接口。它将其操作委托给runnables,它实际上看起来像Facade,以隐藏复杂性并封装特定任务。