本代码库是通过ImageLoader工具函数,熟悉几种常用的设计模式
定义:对于一个类而言,应该仅有一个引起它变化的原因。两个全完不一样的功能不应该放在一个类中,需要根据具体的业务,功能对类进行相应的拆分。比如demo中的DishCache
、DoubleCache
、MemoryCache
等只做图片缓存,ImageLoader
类只做图片加载,相互互不干扰。
定义: 软件中的对象(类、模块、函数等)对扩展是开放的,但对修改是封闭的。比如demo中ImageLoader
可以做到不可修改,但是通过继承ImageCache
,可以扩展程序。
高层次的模块不依赖低层次的模块的实现细节的目的,依赖模块被颠倒另外。依赖倒置原则有如下几个关键点:
- 高层模块不应该依赖低层模块,两者都应该依赖其抽象。比如demo中的
ImageLoader
为高层次的模块,DishCache
、DoubleCache
、MemoryCache
等为低层次模块,两者不相互依赖,但其共同依赖其抽象。 - 抽象不应该依赖细节。
ImageCache
只实现了put
和get
方法 - 细节应该依赖抽象。
DishCache
、DoubleCache
、MemoryCache
依赖实现了抽象ImageCache
类间的依赖关系应该建立在最小的接口上。
在应用开发过程中,最难的不是完成应用的开发工作,而是在后续的升级、维护过程中让应用系统能够拥抱变化。拥抱变化也就意味着在满足需求且不破坏系统稳定性的前提下保持高可扩展性、高内聚、低耦合。在经历了各个版本的变更以后依赖保持清醒、灵活、稳定的系统架构。当然。这是一个比较理想的情况,但是我们必须朝着这个方向去努力,那么遵循面向对象六大原则就是我们走向灵活软件之路所迈出的第一步。