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

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

Java设计原则---开闭原则OCP相关_第1张图片
图片A
Java设计原则---开闭原则OCP相关_第2张图片
图片B

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

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

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

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

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


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

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

修改其他实现好的缓存类


个人总结:

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

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

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

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

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

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

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

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



个人观点 有错请指正

你可能感兴趣的:(Java设计原则---开闭原则OCP相关)