六大设计原则-最少知识原则

最少知识原则

Least Knowledge Principle 简称LKP

什么是最少知识原则

一个软件实体应当尽可能少地与其他实体发生相互作用。
减少对象(方法、系统、类、模块等)之间的联系。

最少知识原则的优点

降低类之间的耦合。由于每个类尽量减少对其他类的依赖,因此,很容易使得系统的功能模块功能独立,相互之间不存在(或很少有)依赖关系。

如何做到最少知识原则

  1. 只与直接的朋友通信
    每个对象都必然会与其他对象有耦合关系,两个对象之间的耦合就成为朋友关系,这种关系的类型有很多,如组合、聚合、依赖等。
    朋友类的定义:出现在成员变量、方法的输入输出参数中的类。 而方法体类内部的类不能算。
  2. 不能过于亲密
    只与直接的朋友通信,但是不能过于亲密,否则耦合关系变得异常牢固,而且,修改时涉及的面也就越大,变更引起的风险就越大。
  3. 是自己的就是自己的
    如果我们发现在一个类中的一个方法,放在本类可以,放在其他的类中也可以并且对任何的类都不产生影响,那么就遵循一个原则,把方法放在本类中

代码举例

第一段代码中小组对于老师来说不是朋友类不应该产生关系。

class Teacher {
  constructor() {
    this.group = new Group();
  }

  command(leader) {
    leader.count(this.group);
  }
}

class Leader {
  constructor() {}

  count(group) {
    //...
  }
}

class Group {
  constructor() {}
  addPerson() {}
}
class Teacher {
  constructor() {}

  command(leader) {
    leader.count();
  }
}

class Leader {
  constructor() {
    this.group = new Group();
  }

  count(group) {
    //...
  }
}

class Group {
  constructor() {}
  addPerson() {}
}

你可能感兴趣的:(六大设计原则-最少知识原则)