六大设计原则-迪米特原则【Low Of Demeter】

六大设计原则

  • 单一职责原则
  • 里式替换原则
  • 依赖倒置原则
  • 接口隔离原则
  • 迪米特原则
  • 开闭原则

迪米特原则

定义:最少知识原则(Least Knowledge Principle,简称 LKP),一
个类对自己需要耦合或者调用的类应该知道的最少。

引出问题:
这里写图片描述

类图描述的就是客户端(Client)使用安装器安(InstallSoftware)装压缩包(Wizard)的关系。

  • 看看下面的坏的代码:
public class InstallSoftware {   
        public void installWizard(Wizar wizard){
              int first = wizard.first(); 
              //根据first返回的结果,看是否需要 if(first>50){ 
              int second = wizard.seco if(second>50){ 
              int third = wizard.th if(third >50){ 
              wizard.first(); 
          } 
     }
 } 
  • 分析:
    这样的耦合是极度不合适的,迪米特法则就要求类“小气”一点,尽量不要对外公布太多的 public 方法和非静态的 public 变量,尽量内敛,多使用 private,package-private、protected 等访问权限。

  • 修改后的代码:

/**
 *安装类
 */

public class InstallSoftware { 
    public void installWizard(Wizard wizard){ 
         //不废话,直接调用
         wizard.installWizard(); 
    } 
} 

/**
 *压缩包类
 */
public class Wizard { 
    private Random rand = //第一步
    private int first(){ 
      System.out.printl return rand.nextIn 
    } 

//第二步
private int second(){ 
  System.out.printl return rand.nextIn 
} 

//第三个方法
private int third(){ 
  System.out.printl return rand.nextIn 
} 

//软件安装过程
public void installWiz int first = this.f //根据first返回的结果 if(first>50){ 
  int second = th if(second>50){ 
  int third =  if(third >5 this.fir 
  } 
 } 
}  
  • 结论
    这样我们的程序就做到了弱耦合,一个类公布越多的 public属性或方法,修改的涉及面也就越大,也就是变更引起的风险就越大。因此为了保持朋友类间的距离,你需要做的是:减少 public 方法,多使用 private、package-private(这个就是包类型,在类、方法、变量前不加访问权限,则默认为包类型)protected 等访问权限,减少非 static 的 public 属性,如果成员变量或方法能加上 final 关键字就加上,不要让外部去改变它。

原则:
如果一个方法放在本类中,即不增加类间关系,也对本类不产生负面影响,就放置在本类中。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值