面向对象六大基本原则
设计模式六大基本原则
1.单一职责原则
英文:Single Responsibility Principles,缩写SRP
定义:就一个类而言,应该仅有一个引起它变化的原因。
理解:例如两个完全不一样的功能就不应该放在一个类中。一个类总应该是一组相关性很高的函数,数据的封装。
对应一个类,不求功能面面俱到,只求能把一件事做好
2.开闭原则
英文:Open Close Principle,缩写OCP
定义:对于扩展是开放的,对于更改是封闭的。就是说软件实体(类、模块、函数等等)应该可以扩展,但是不能修改。
理解:在软件的生命周期中,因为变化,升级维护等原因需要对软件原有代码进行修改时,可能会将错误引入源码已经经过测试的没有错误的旧代码中,造成以前没有错误的代码错误。因此,当软件需要变化时,我们应该尽量通过扩展的方式来实现变化,而不是通过修改已有代码来实现。
实现开放封闭原则的关键就是抽象。对应已存在的实现类对应修改时封闭的,但是心的实现类可以通过覆盖父类的接口应对变化。
3.里氏替换原则
英文:Liskov Substitution Principle,缩写LSP
定义:所有引用基类的地方必须能透明的使用其子类的对象
理解:只要父类能出现的地方子类就可以出现,而且替换为子类不会产生任何错误或异常,使用者根本不需要知道是父类还是子类。但是,反过来就不行了,有子类出现的地方,父类未必能适应。总结起来就是:抽象。
4.依赖倒置原则
英文:Dependence Inversion Principle,缩写DIP
定义:高层模块不应该依赖底层模块,两个都应该依赖抽象;抽象不应该依赖细节,细节应该依赖抽象。
抽象是指接口或抽象类,两者都是不能直接被实例化的;细节就是实现类,实现接口或继承抽象类而产生的类就是细节,其特点是可以实例化,也就是可以加上一个关键字 new 产生一个对象。高层模块就是调用端,底层模块就是具体实现类。
理解:这个原则的精髓就是,面向接口编程,或者说面向抽象编程,这里的抽象是指接口或者抽象类。依赖倒转原则是开放封闭原则实现的手段,是抽象的最好规范。依赖抽象,而不依赖具体实现。
5.接口隔离原则
英文:Interface Segregation Principle,缩写ISP
定义:客户端不应该依赖它不需要的接口,即类间的依赖关系应该建立在最小接口上。
理解:就是将非常庞大,臃肿的接口拆分成更小的和更具体的接口(这个和单一职责有点像只不过这个是接口),这样使用者只需要知道他们感兴趣的方法就行。这样做可以使系统拥有更低的耦合性、更高的灵活性。这个原则说白了就是,让客户端依赖的接口尽可能的小。
6.迪米特原则
英文:Law of Demeter,缩写LOD
定义:这个原则也叫最少知识原则:一个对象应该对其它对象有最少的了解。
理解:这个原则有一个英文解释就是说 Only talk to your immedate friends,翻译就是只和直接的朋友通信。什么是直接朋友?每个对象都必然会与其他对象有耦合关系,两个对象直接的耦合就成为朋友关系,这种类型有很多,如组合,聚合,依赖等。
调用者或者依赖者只要知道它需要的方法即可,至于方法是如何实现的,实现方法的类需要做什么,都不需要知道。知道的越少耦合度约低,当一个类发生变化的时候,对另一个类的影响越小。就像现实中的找中介租房,我们只关系房间的面积和租金,让中介将符合要求的房子提供给我们就行了。