-
Notifications
You must be signed in to change notification settings - Fork 127
Fresco中的设计模式
MicroBread edited this page Dec 12, 2017
·
8 revisions
通常名为XXXBuilder类,用于复杂的对象构建,可以将初始化过程中的一些判断封装起来,并为未提供的属性设置默认值等,通常只需要一句.build()
即可方便地构建对象。
继承Supplier
接口的类,它将一类对象包装起来。使用.get()
的时候会根据现有条件提供新对象(如根据Uri构建新的DataSource)。接口原型:
public interface Supplier<T> {
T get();
}
异步信息传递实现的工具。Producer会在内容生产完成后通知指定Consumer。Producer原型:
public interface Producer<T> {
/**
* 在数据加载完成后向Consumer发送数据
* @param consumer 目标consumer
* @param context 含有唯一标识、ImageRequest等内容
*/
void produceResults(Consumer<T> consumer, ProducerContext context);
}
其中泛型为生产内容的类型。Consumer原型:
public interface Consumer<T> {
/**
* 当Producer产生新数据时调用
*
* @param newResult
* @param isLast 若为true,返回的是最终结果
*/
void onNewResult(T newResult, boolean isLast);
/**
* 当Producer由于某种Throwable而停止产生数据时调用
*
* @param t
*/
void onFailure(Throwable t);
/**
* 当Producer主动取消提供数据时调用
*/
void onCancellation();
/**
* 当更新加载进度时调用
*
* @param progress [0, 1]内的浮点数
*/
void onProgressUpdate(float progress);
}