近期看了一些设计模式相关的书籍,突然有了一个想法,借助所学,去实现一个图片加载框架。
1.UML设计
从图中可以看到面向对象的几大设计原则
1)依赖倒置原则:高层模块(ImageLoader)只依赖于接口or抽象类(ImageCache),不依赖具体的实现类(DiskImageCache、MemoryImageCache等具体的实现类)
2)单一职责原则:加载业务、不同的缓存业务相分离,实现了解耦、分离
3)开闭原则:修改不同的缓存策略、用户不同的自定义缓存策略,都可以通过继承ImageCache接口类实现具体的缓存类,而且过程中,ImageLoader、ImageCache不再需要改动,只需改动上层调用处(Activity)
4)里氏代换原则:基类出现的地方,都可以通过子类来替代,在ImageLoader内部只有ImageCache的基类对象存在,在activity中调用时,ImageLoader内部传入具体的实现类(DiskImageCache、Memory…)
5)接口隔离原则:使接口功能尽可能的少、分离,此处无体现,当然,如果我们有更多复杂的场景和需求,不要把所有功能接口都写在ImageLoader内部,而是根据不同的业务类型去封装不同的业务接口,实现接口隔离
6)迪米特原则(最小知道原则):一个类对另外一个类的了解,尽可能的少,此