Java设计原则---开闭原则OCP相关

使用Android 图片缓存代码来说下开闭原则  ,下面是常规的图片缓存代码

图片A
图片B

图片A中:我们创建一个ImageCache类实现需要缓存的图片的方式,起初我们只实现sdcard和内存缓存,

在ImageLoad获取图片也只通过这2个缓存地去查找图片,

当我们需要添加第三乃至更多缓存方式时 就需要在ImageCache添加对应的缓存方式方法,

这时候我们就需要修改ImageCache同时也要需改ImageLoader 的displayImage方法 

这就违背了开闭原则,只对扩展开发 ,对修改关闭,我们这里扩展了 但是也修改了.........


图片B中:我们把具体实现缓存的类都实现统一的ImageCache接口,具体缓存实现类只关注自己的缓存实现

在ImageLoader中通过setImageCache把缓存类对象注入,当我们添加更多缓存方式时只扩展一个新的缓存而不需要去

修改其他实现好的缓存类


个人总结:

1:图片A这种实现方式并不是不可取,这个要根据公司具体业务来调整

如果是单纯的一般小公司,业务不是很大的,而且又是单人开发,图A这种方式 写起来快速方便代码又少

但是如果是大公司,业务逻辑复杂,需求变更频繁,当然B是更好的。

2:图A这种方式某种意义上又违背了"类单一职责原则",但是也不是绝对的,至少这个类只是实现了自己的缓存功能,

一个类只有一个引起这个类变化的原因。即一个类只完成一个功能,(类单一职责原则)

如果做不到一个类只完成一个功能,最少要保证一个方法只完成一个功能。

3:原则是死的具体开发还是按照具体的业务来调整吧!图片A这种方式,虽然会修改代码,

但至少是以扩展的方式去修改,并不会引起上层调用逻辑错误



个人观点 有错请指正

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容