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

简介: 六大设计原则-迪米特原则【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 关键字就加上,不要让外部去改变它。

原则:

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


目录
相关文章
|
11月前
|
设计模式 Java 测试技术
Java设计模式七大原则-接口隔离原则
Java设计模式七大原则-接口隔离原则
72 0
|
11月前
|
设计模式 Java 数据库
Java设计模式七大原则-依赖倒转原则
Java设计模式七大原则-依赖倒转原则
78 0
|
12月前
七大设计原则之迪米特法则应用
七大设计原则之迪米特法则应用
76 0
|
4月前
|
设计模式 存储 自然语言处理
Java面向对象设计七大原则
Java面向对象设计七大原则
96 0
|
11月前
软件设计原则-迪米特原则讲解以及代码示例
迪米特原则(Law of Demeter,简称LoD)也被称为最少知识原则(Least Knowledge Principle,LKP),是面向对象设计的一种重要原则。迪米特原则的核心思想是尽量减少对象之间的交互,使得系统中的模块能够相对独立地变化。
87 0
软件设计原则-迪米特原则讲解以及代码示例
|
11月前
|
设计模式 Java
Java设计模式七大原则-里氏代换原则
Java设计模式七大原则-里氏代换原则
55 1
|
11月前
|
设计模式 Java
Java设计模式七大原则-迪米特法则
Java设计模式七大原则-迪米特法则
53 0
|
11月前
|
设计模式 Java
Java设计模式七大原则-单一职责原则
Java设计模式七大原则-单一职责原则
63 0
|
设计模式 测试技术 uml
面向对象设计的九大基本原则 (GRASP)
面向对象设计的九大基本原则 (GRASP)
1122 0
|
设计模式
设计模式 - 六大设计原则之LoD(迪米特法则原则)
迪米特法(Law Of Demeter , LoD)则又叫最少知道原则(Least Knowledge Principle),最早是在1987年由美国Northeastern University的Ian Holland提出。 通俗的来讲,就是一个类对自己依赖的类知道的越少越好。也就是说,对于被依赖的类来说,无论逻辑多么复杂,都尽量地的将逻辑封装在类的内部,对外除了提供的public方法,不对外泄漏任何信息。
168 0
设计模式 - 六大设计原则之LoD(迪米特法则原则)