1.七大设计原则

1.单一职责原则--每个类只负责一件事

2.接口隔离原则

  • 客户端不应该依赖他不需要的接口,两个类都实现了一个接口,接口里有五个方法,第一个类需要使用全部的方法,第二个类只需要使用三个方法,这样第二个类就违反了接口隔离原则
  • 按照接口隔离原则就应该拆分成两个接口,来处理两个类

3.依赖倒转原则--接口的依赖可以有接口实现,构造器实现,set方法实现

  • java的概念:抽象指的是抽象类和接口,细节知道是实现类
  • 高层模块不应该依赖于底层模块,两者都应该依赖于其抽象
  • 依赖倒转的中序思想就是面向接口编程

违反依赖倒转,每次添加一个新的方法people都要修改相应的参数

 

 

 4.里氏替换原则--为的是解除父类和子类的耦合

  • 子类中尽量不要去重写父类的方法
  • 里氏替换原则实际上告诉我们不要去使用继承,可以使用聚合,组合和依赖来解决问题---在原来的子类b中包含私有属性父类a组合达到也能使用原来a类的代码的目的
  • 基类随便怎么改动子类都不受此影响,那么基类才能真正被复用
  • 子类必须实现父类的抽象方法,但不得重写(覆盖)父类的非抽象(已实现)方法。
  • 子类中可以增加自己特有的方法。
  • 当子类覆盖或实现父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
  • 当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。

5.开闭原则--是所有其他原则的目的

  • 对扩展开放,对修改关闭,用抽象构建框架,用实现扩展细节,当我门增加一个功能的时候是去扩展而不是增加

下面是一个违反开闭原则的例子,在添加了三角形之后,改动了使用方的代码

 

 

 一下方法是符合开闭原则的

 6.迪米特法则--又称最小知道法则

  • 一个类对自己依赖的类知道的越少越好,不管类多么复杂,都将逻辑封装在类的内部,只对外提供public方法,不泄露其他任何信息
  • 只与直接的朋友通信--在类中的成员属性,方法参数,方法返回值出现的其他类为直接的朋友,陌生的类不要以局部变量的形式出现在类的内部

7.合成复用原则--不使用继承而是合成与聚合

用直接朋友关系替换父子关系

 

 ps:UML类图

 

 

Dependency依赖:A用到了B就说A依赖于B

 

Generalization泛化(继承)

Realization实现,实现式依赖关系的特例

Association关联,是依赖关系的特例

 

 aggregation聚合关系和composite组合关系:表示整体和部分的关系是可以抽离出来的,是关联关系的特例

如果一台电脑有两个属性键盘和鼠标,如果键盘,鼠标和电脑是可以分开的那么他们是聚合的关系,如果是不可分开的那就是组合的关系

 

 区分这两个关系的方法:看是不是会一起死

 

posted @ 2021-07-23 23:34  一拳超人的逆袭  阅读(51)  评论(0编辑  收藏  举报