面向对象的三大特征和五大基本原则

三种基本特征

Java是一门纯粹的面向对象的程序设计语言,主要表现为Java是支持面向对象的三种基本特征:

封装

继承

多态

Java程序的最小程序单元是类,即Java程序是由一个个类组成的

五大基本原则

  • 单一职责原则(Single-Responsibility Principle)

    核心思想:一个类最好只做一件事,只有一个引起它的变化

    单一职责原则可以是看作是低耦合、高内聚在面向对象原则上的引申,将职责定义为引起变化的原因,来提高内聚性,减少引起变化的原因

    如果职责过多,该类的变化原因就会增多,这将导致职责依赖,相互之间产生影响

    单一职责原则,从某种意义上也是降低耦合和内聚的一种方式。

  • 开放封闭原则(Open-Closed principle)

    核心思想:软件实体应该是可扩展的,而不可修改的。即对扩展开放,对修改封闭

    开放封闭原则主要体现在以下两个方面:

    1. 对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展

    2. 对修改封闭,意味着类一旦设计完成,就可以独立完成其工作,不要对其进行任何尝试性的修改

    处理方式:

    对抽象编程,不对具体编程

    抽象相对稳定,可以让类依赖于固定的抽象,只提供抽象,修改就是封闭的

    通过面向对象的继承和多态机制,又可以实现对抽象类的继承,通过重写其方法来改变固有的行为,实现新的拓展,这就是开放

    总结一点:功能类需要依赖于抽象,来实现封闭;通过重写来实现开放

  • 里氏替换原则(Liskov-Substitution Principle)

    核心思想:子类必须能够替换其基类,这一思想体现在对继承机制的约束规范

    • 只有子类能够替换基类时,才能保证系统在运行期内识别子类,这是保证继承复用的基础

    • 子类继承了父类的特性,因此子类可以替换父类,但是反过来,父类不一定能替换子类

    实现方式:面向接口编程,将公共部分抽象为基类接口或抽象类,通过扩展抽象类,在子类中重写父类的方法实现新的方式支持同样的职责

    违反里氏替换原则就必然会导致违反开放封闭原则

  • 依赖倒置原则(Dependecy-lnversion Principle)

    核心思想:依赖于抽象。即高层模块不依赖于底层模块,二者都同时依赖于抽象,达到抽象不依赖于具体,具体依赖于抽象。

    依赖一定会存在于类与类、模块与模块之间,当两个模块之间存在紧密的耦合关系时,最好的方法就是分离接口实现

    在依赖之间定义一个抽象的接口,使得高层模块调用接口,而底层模块实现接口定义,以此来有效控制耦合关系,达到依赖于抽象的设计目标

  • 接口隔离原则(Interface-Segregation Principle)

    核心思想:使用多个小的专门的接口,不要使用一个大的总接口

    接口隔离原则体现在:接口应该内聚,避免接口臃肿,一个类对另一个类的依赖应该建立在最小的接口上,不要强迫依赖不用的方法

    接口有效地将细节和抽象隔离,体现了对抽象编程的一切好处,接口隔离强调的是接口的单一性

    分离的手段有两种:

    • 委托分离:通过增加一个新的类型来委托客户请求,隔离客户和接口的直接依赖,但是会增加系统的开销

    • 多重继承分离:通过接口多继承来实现客户的需求,推荐这种方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Carl·杰尼龟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值