1、单一职责原则
简单的来说,一个类中应该是一组相关性很高的函数、数据的封装。对于一个具体的示例图片加载器,可以分为图片加载和图片缓存功能,为了满足单一职责,应该把各个功能独立出来,ImageLoader只负责图片的加载,而ImageCache只负责处理图片缓存的逻辑。而不应该一股脑的都封装在一个类中。正如上面所说,单一职责所表达的用意就是“单一”二字。对于两个完全不一样的功能就不应该放在一个类中。
2、开闭原则
软件中的对象(类、模块、函数等)应该对于扩展是开放的,但是,对于修改是封闭的。因为修改可能会将错误引入原本已经经过测试的旧代码中,破坏原有系统。因此,当软件需要变化时,我们
应该尽量通过扩展的方式来实现变化,而不是通过修改已有的代码来实现。而遵循开闭原则的重要手段就是抽象。
比如ImageCache,一开始我们写了MemoryCache,后来因为需求,我们扩展了一个类DiskCache,最后,我们又扩展了一个双缓存类(如果MemoryCache没有找到,则去DiskCache中查找,如果还没有找到,则网络请求)。为了使扩展性、灵活性更高,MemoryCache、DiskCache、DoubleCache都实现了ImageCache接口,并且ImageLoader提供了一个setImageCache方法支持用户自定义缓存。
public interface ImageCache{
public Bitmap get(String url);
public void put(String url,Bitmap bmp);
}