浅析面对对象 六大原则(六)
来源:互联网 发布:mysql 高性能集群 编辑:程序博客网 时间:2024/06/04 19:27
1.单一职责原则点击跳转
2.开闭原则点击跳转
3.里氏替换原则点击跳转
4.依赖倒置原则点击跳转
5.接口隔离原则点击跳转
6.迪米特原则(更好的可扩展性)
迪米特原则的英文名是Law of Demeter,缩写是LOD,也成为最少知识原则。虽然名称不同,但是所代表的含义是一样的,一个对象应该对其他对象有最少的了解。简单的讲,一个类应该对自己需要耦合或者调用的类知道的更少,类的内部如何实现与调用者或者依赖者没关系,调用者或依赖者只需要知道他所需要的方法即可,其他的一概不管。类与类之间的关系越密切,耦合度就越高,当一个类发生改变时,对另一个类的一影响也越大。
迪米特原则还有一个英文解释是Only talk to your immedate friends ,翻译过来就是只与直接的朋友进行通信。什么是immedate friends呢?它所指的就是每个对象都必然的会与其他对象出现耦合关系,两个对象的耦合就成为朋友关系,这种朋友关系有很多种类型,如组合,聚合,依赖等。
如何来看迪米特法则,在以前的相关文章中,我们使用到SD卡缓存,ImageCache是客户端的直接朋友,而SD卡缓存内部使用了jake wharton的DiskLruCache实现,这个DiskLruCache 就不属于用户的直接朋友,因为用户完全可以不知道他的存在,用户只需要和ImageLoader打交道即可,如将图片存储到SD卡中代码如下:
public void putBitmap(String key, Bitmap bitmap) { DiskLruCache.Editor editor = null; try{ editor = diskLruCache.edit(key); if (editor != null){ OutputStream outputStream = editor.newOutputStream(0); if (writeBitmapToDisk(value,outputStream)){ //写入SD卡缓存 editor.commit(); }else { editor.abort(); } CloseUtils.closeQuietly(outputStream); } }catch (IOException e){ e.printStackTrace(); } }
当用户使用SD卡缓存时,根本不知道DiskLruCache的实现,这就很好的向用户隐藏了具体的实现。假如把DiskLruCache偷偷的更换实现方式,用户依然还是不会感知到其中的实现发生了改变,因为用户从一开始就不知道DiskLruCache的存在,他们并没有与LruCache进行通信,他们只是找到immedate firends – ImageCache,ImageCache将一切细节隐藏在了直接朋友的外衣下,这就使系统有更低的耦合性和更好的可扩展性。
阅读全文
1 0
- 浅析面对对象 六大原则(六)
- 浅析面对对象 六大原则(一)
- 浅析面对对象 六大原则(二)
- 浅析面对对象 六大原则(三)
- 浅析面对对象 六大原则(四)
- 浅析面对对象 六大原则(五)
- 面对对象的六大原则
- 面对对象的六大原则
- (随记六)Android设计模式解析与实战_面对对象六大原则之加米特原则
- 面对对象编程--设计模式六大原则
- 面向对象六大原则(六):开闭原则
- 面向对象六大原则(六):迪米特原则
- 面对对象 谈恋爱五大原则浅析!
- 六大设计原则浅析
- 六大设计原则浅析
- (随记二)Android设计模式解析与实战_面对对象六大原则之开闭原则
- 面对对象设计原则
- 设计模式六大原则(六)-- 开放封闭原则 ( OCP )
- vue项目开发环境篇一
- QSemaphore、QWaitCondition实现线程同步
- 在java中获取变量的类型
- C. Foe Pairs
- Vue.js+Webpack+Sass+Jade(pug)网站构建
- 浅析面对对象 六大原则(六)
- 生产开启特定Debug日志
- sql语句中GROUP BY 和 HAVING的使用 count()
- SQL语句优化
- 出差归来,谈谈出差的想法(一)。
- JavaWeb学习之Servlet(一)----MyEclipse及Tomcat的配置
- 信号处理国际会议排名
- Consul服务注册发现
- ASCII