0

目前项目使用的图片加载框架是Picasso ,但是只使用到了部分功能.

现在看来很多地方显示图片都是直接使用

Picasso.with(c).load(path).into(img);

现在我在想如果以后想要换成Glide的话,那么会有很多地方都需要修改,所以我是不是应该对Picasso 进行一层包装,加载图片的时候使用包装类去进行任务,以后切换图片加载框架的时候成本也小一些?

public class Display {
    public static Picasso with(Context context) {
        return Picasso.with(context);
    }
}

如果有用的话这样可以吗? 有点菜,关爱一下本人新手....

但是这样的话,也只是因为GlidePicasso 加载图片的API 比较相似,如果使用了其他命令,例如占位符,错误显示图片等,这样的处理没有任何帮助,如果是其它的图片加载框架,那么还是一个灾难.

我应该把显示一张图片所需要的2个关键对象 图片来源控件 独立出来,然后调用图片加载框架真正的对图片进行处理,这样的话我可以在不创建多余对象的情况下,避免并发的问题吗......

查看全部 3 个回答

0

使用策略模式设计一个可以随时切换的图片加载工具类
封装并实现统一的图片加载架构

同理,网络加载也可以这么做

推荐答案

0

已采纳

当然要封装一层来隐藏实现呀, 万一有新需要导致需要扩展实现呢?!

假设开发者目前使用了一个不支持加载视频缩略图的框架, 而新需求又要求加载在线视频缩略图, 那么这是我们就会考虑把原有框架替换为Glide等支持扩展的框架(主流的几个图片异步加载框架都能加载图片还有本地视频的缩略图, 但是对于远程视频一般都会交给开发者自己去扩展实现). 如果之前没有封装, 那么就只好把所有图片异步加载的调用全部替换一遍了.

又或者由于性能 & 易用性等原因需要替换原有框架, 也会出现上述问题.

正常情况下, 一个App并不会要求同时使用或者支持可配置多框架, 因此, 没必要过度设计, 只需将其封装成一个用于隐藏实现的工具类就好了.