三种基本特征
Java是一门纯粹的面向对象的程序设计语言,主要表现为Java是支持面向对象的三种基本特征:
Java程序的最小程序单元是类,即Java程序是由一个个类组成的
五大基本原则
-
单一职责原则(Single-Responsibility Principle)
核心思想:一个类最好只做一件事,只有一个引起它的变化
单一职责原则可以是看作是低耦合、高内聚在面向对象原则上的引申,将职责定义为引起变化的原因,来提高内聚性,减少引起变化的原因
如果职责过多,该类的变化原因就会增多,这将导致职责依赖,相互之间产生影响
单一职责原则,从某种意义上也是降低耦合和内聚的一种方式。
-
开放封闭原则(Open-Closed principle)
核心思想:软件实体应该是可扩展的,而不可修改的。即对扩展开放,对修改封闭
开放封闭原则主要体现在以下两个方面:
-
对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展
-
对修改封闭,意味着类一旦设计完成,就可以独立完成其工作,不要对其进行任何尝试性的修改
处理方式:
对抽象编程,不对具体编程
抽象相对稳定,可以让类依赖于固定的抽象,只提供抽象,修改就是封闭的
通过面向对象的继承和多态机制,又可以实现对抽象类的继承,通过重写其方法来改变固有的行为,实现新的拓展,这就是开放
总结一点:功能类需要依赖于抽象,来实现封闭;通过重写来实现开放
-
-
里氏替换原则(Liskov-Substitution Principle)
核心思想:子类必须能够替换其基类,这一思想体现在对继承机制的约束规范
-
只有子类能够替换基类时,才能保证系统在运行期内识别子类,这是保证继承复用的基础
-
子类继承了父类的特性,因此子类可以替换父类,但是反过来,父类不一定能替换子类
实现方式:面向接口编程,将公共部分抽象为基类接口或抽象类,通过扩展抽象类,在子类中重写父类的方法实现新的方式支持同样的职责
违反里氏替换原则就必然会导致违反开放封闭原则
-
-
依赖倒置原则(Dependecy-lnversion Principle)
核心思想:依赖于抽象。即高层模块不依赖于底层模块,二者都同时依赖于抽象,达到抽象不依赖于具体,具体依赖于抽象。
依赖一定会存在于类与类、模块与模块之间,当两个模块之间存在紧密的耦合关系时,最好的方法就是分离接口和实现
在依赖之间定义一个抽象的接口,使得高层模块调用接口,而底层模块实现接口定义,以此来有效控制耦合关系,达到依赖于抽象的设计目标
-
接口隔离原则(Interface-Segregation Principle)
核心思想:使用多个小的专门的接口,不要使用一个大的总接口
接口隔离原则体现在:接口应该内聚,避免接口臃肿,一个类对另一个类的依赖应该建立在最小的接口上,不要强迫依赖不用的方法
接口有效地将细节和抽象隔离,体现了对抽象编程的一切好处,接口隔离强调的是接口的单一性
分离的手段有两种:
-
委托分离:通过增加一个新的类型来委托客户请求,隔离客户和接口的直接依赖,但是会增加系统的开销
-
多重继承分离:通过接口多继承来实现客户的需求,推荐这种方式
-