七大设计原则

开闭原则(Open-Closed Principle,OCP)
定义:对扩展开放,对修改关闭,用抽象去构建框架,用实现扩展细节。
前面说的太官方,简单的理解就是尽量不去修改现有的代码,通过扩展来开发新增需求。因为对已有代码的改动可能会产生新bug,并且影响范围不可控,比如你写了一个公共的方法,不知道有多少人调用了或者你自己有很多地方调用,如果修改,就需要大面积重测,不利于后期扩展和维护。
开就是允许扩展,闭就是不允许修改已有代码。
优点:提高软件系统的可复用性和可维护性,减少维护成本。
核心思想:面向抽象编程

依赖倒置原则(Dependence Inversion Principle)
定义:高层模块不应该依赖低层模块,都应该依赖抽象。
什么是高层模块:就是调用其他类的模块。
什么事低层模块:就是被其他类调用的。
比如:controller类中有调用service类,那么controller就是高层,service就是低层。
Controller中不应该引用具体的某个service实现,应该引用其接口。这样当低层实现改变时,高层是无感的。
所以其核心思想就是:面向接口编程

单一职责原则(Single Responsibility Principle)
定义:一个类只有一个引起它变化的原因。
简单说就是一个类只干一件事情,如果有多个事情,就分开多个类,这样互不影响,降低耦合性。

接口隔离原则(Interface Segregation Principle)
定义:客户端不应该依赖他不需要多借口;一个类对另一个类的依赖应该建立在最小接口上。
说人话就是:类实现接口时,其接口里的方法都应该是对其有用的,没有无关的方法需要实现,如果有,就把接口拆开成多个。

迪米特法则(Law Of Demeter)
定义:迪米特法则又叫最少知道原则。即:一个对象应该对其他对象保持最少的了解。
说人话就是:不相关的类别使用也别出现,相关的类也叫朋友类,只和朋友类交流。
什么是朋友类:出现在成员变量,方法的入参和出参中的类为朋友类,出现在方法体内部的类,不属于朋友类。
所以:迪米特法则就是方法中不应该出现未在成员变量、入参、出参中定义的对象,静态方法调用除外。

里氏替换原则(Liskov Substitution Principle)
里氏替换原则是:适用于父类的地方同样适用于子类,也就是写父类的地方换成子类,不影响程序执行。
子类可以扩展父类非抽象方法,可实现抽象方法,可增加自己特有方法,但是别改变父类非抽象方法。换句话说就是子类只能重载父类的非抽象方法,不要重写父类的非抽象方法,并且重载时,入参要比父类宽松。当子类实现父类抽象方法时,出参要比父类严格。

合成复用原则(Composite/Aggregate Reuse Principle,CARP)
合成复用原则简单理解就是:把要使用的类尽量定义成成员变量,而不是去继承它,能不继承就不继承,这样降低耦合,灵活。

上一篇:面向对象编程


下一篇:Principle for Mac(交互式原型设计工具)v6.12免激活