迪米特法则(LOD)

不该有直接依赖关系的类之间,不要有依赖;有依赖关系的类之间,尽量只依赖必要的接口。迪米特法则是希望减少类之间的耦合,让类越独立越好。每个类都应该少了解系统的其他部分。一旦发生变化,需要了解这一变化的类就会比较少。一个软件实体应当尽可能少地与其他实体发生相互作用。

对于其他的类知道的越少越好(字段、方法参数、方法返回值、方法中实力出的对象等)。

class Computer {

    public void saveData() {
        System.out.println("保存数据");
    }

    public void killProcess() {
        System.out.println("关闭程序");
    }

    public void closeScreen() {
        System.out.println("关闭屏幕");
    }

    public void poweroff() {
        System.out.println("断电");
    }
}

class Person {
    private Computer c  = new Computer();

    public void shutdownComputer() {
        c.saveData();
        c.killProcess();
        c.closeScreen();
        c.poweroff();
    }
}

上述代码中Person对Computer的细节知道的太多了。

对于Person而言,只需要知道,关机按钮在哪就行,不需要知道如果保存数据,如果关闭进程,如何断电等等细节…

这样的话,代码的复杂度就提升了。 如果用户使用不当,就可以造成更大的损失。例如: 不小心先断电,而没有保存数据,会造成损失。

对上述代码进行改造使之符合迪米特法则:把细节都封装起来了,只需要对外提供一个方法,调用方只需要调用这一个方法就可以了并且不需要担心出现问题。

class Computer {

    private void saveData() {
        System.out.println("保存数据");
    }

    private void killProcess() {
        System.out.println("关闭程序");
    }

    private void closeScreen() {
        System.out.println("关闭屏幕");
    }

    private void poweroff() {
        System.out.println("断电");
    }

    public void shutDown() {
        this.saveData();
        this.killProcess();
        this.closeScreen();
        this.poweroff();
    }
}

class Person {
    private Computer c  = new Computer();
	
    public void shutdownComputer() {
        c.shutDown();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值