浅析面对对象 六大原则(六)

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值