美文网首页JAVA面试必备基础知识点
第十四章、面向对象设计与编程

第十四章、面向对象设计与编程

作者: 小母牛不生产奶 | 来源:发表于2018-10-29 23:10 被阅读1次

面向对象的基本元素:封装、继承、多态。

1、封装:封装的目的是隐藏事物内部的实现细节,以便提高安全性和简化编程。封装提供了合理的边界,避免外部调用者接触到内部的细节。日常开发中,因为无意间暴露了细节导致的难缠bug太多了,比如在多线程环境暴露内部状态,导致的并发修改问题。从另外一个角度看,封装的这种隐藏,也提供了简化的界面,避免太多无意义的细节浪费调用者的精力。

2、继承:代码复用的基础机制,类似于我们对于马、白马、黑马的归纳总结。但要注意,继承可以看作是非常紧耦合的一种关系,父类代码修改,子类行为也会变动。在实践中,过度滥用继承,可能会起到反效果。

3、多态:可能会想到重写(override)和重载(overload)、向上转型。简单说,重写是父子类中相同名字和参数的方法,不同的实现;重载则是相同名字的方法,但是不同的参数,本质上是这些方法签名是不一样的。


进行面向对象编程,掌握基本的设计原则是必须的,S.O.L.I.D原则。

单一职责(Single Responsibility):类或者对象最好是只有单一职责,在程序设计中如果发现某个类承担着多种义务,可以考虑进行拆分。

开关原则(Open-Close,Open for extension,close for modification):设计要对扩展开放,对修改关闭。换句话说,程序设计应保证平滑的扩展性,尽量避免因为新增同类功能而修改已有实现,这样可以少产出些回归问题。

里氏替换(Liskov Substitution):这是面向对象的基本要素之一,进行继承关系抽象时,凡是可以用父类或者基类的地方,都可以用子类替换。

接口分离(Interface Segregation):我们在进行类和接口设计时,如果在一个接口里定义了太多方法,其子类很可能面临两难,就是只有部分方法对它时有意义的,这就破坏了程序的内聚性。

对于这种情况,可以通过拆分成功能单一的多个接口,将行为进行解耦。在未来维护中,如果某个接口设计有变,不会对使用其他接口的子类构成影响。

依赖反转(Dependency Inversion):实现应该依赖于抽象而不是实现,也就是说高层次模块,不应该依赖于低层次模块,而是应该基于抽象。实践这一原则时保证产品代码之间适当耦合度的法宝。


OOP原则的取舍

相关文章

  • 第十四章、面向对象设计与编程

    面向对象的基本元素:封装、继承、多态。 1、封装:封装的目的是隐藏事物内部的实现细节,以便提高安全性和简化编程。封...

  • 面向对象、设计原则、设计模式、编程规范、重构

    面向对象、设计原则、设计模式、编程规范、重构 面向对象 主流的三个编程风格有:面向对象,面向过程,函数式编程。 面...

  • 面向指针编程(一)

    面向对象编程,面向设计模式编程(亦即设计模式),面向接口编程,面向模板编程(亦即泛型编程),面向函数编程(亦即函数...

  • 面向对象基础

    面向对象编程包括: 面向对象的分析(OOA) 面向对象的设计(OOD) 面向对象的编程实现(OOP) 面向对象思想...

  • 《Kotlin入门实战》CH4 | 类与面向对象编程

    类与面向对象编程 从面向过程到面向对象,再到设计模式,架构设计,面向服务,Sass、Pass和Iass等思想,各种...

  • Java核心技术学习笔记一

    第四章 类与对象 一、面向对象设计概述 1、面向过程与面向对象 传统的结构化程序设计通过设计一系列的过程(即算法...

  • JS设计模式 -- 面向对象 -- 1 封装

    以下内容来自张荣铭《JavaScript设计模式》第2章。 两种编程风格 -- 面向过程与面向对象。 面向对象编程...

  • PHP全栈学习笔记8

    面向对象的基本概念,面向对象编程,oop,面向对象,面向对象的分析,面向对象的设计,面向对象的编程,什么是类。 类...

  • PHP全栈学习笔记8

    面向对象的基本概念,面向对象编程,oop,面向对象,面向对象的分析,面向对象的设计,面向对象的编程,什么是类。 类...

  • 面向对象设计—类和对象

    原文链接:面向对象设计—类和对象 1. 面向对象程序设计的基本概念 Java是一种面向对象的编程语言。面向对象编程...

网友评论

    本文标题:第十四章、面向对象设计与编程

    本文链接:https://www.haomeiwen.com/subject/zmzitqtx.html