设计模式: 七大原则之 迪米特法则(最少知道原则)

七大原则之 迪米特法则(最少知道原则)

  • 迪米特法则(最少知道原则):
			一个类,对于其它类,要知道得越少越好
			只和朋友通信
  • 什么是朋友:
   			a. 类中的字段
    		b. 方法的参数
    		c. 方法的返回值
    		d. 方法中实例出来的对象

反例:

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();
    }
}
  1. 此时,这个Person对Computer得细节知道的太多了.
  2. 对于Person而言,只需要知道,关机按钮在哪就行,不需要知道如果保存数据,如果关闭进程,如何断电等等细节…
  3. 这样的话,代码的复杂度就提升了!! 万一用户使用不当,就可以造成更大的损失
  • 例如: 不小心先断电,而没有保存数据,会造成损失.

正例:

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();
    }
}
  • 此时把细节都封装起来了,只需要提供一个方法,其余的交给哪个方法操作就可以了.
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值