【第二周】学习总结——面向对象设计原则
1、软件开发简史(从编程历史看编程的本质和未来)
讲解了软件编程的发展历史,比如打孔机,汇编语言,再到现在主流的面向对象语言。面向对象语言也将是以后未来继续发展的语言。
软件的本质是用计算机解决现实世界的问题。
2、面向对象编程的三要素(特性)
封装性
隐藏实现细节
定义访问接口
继承性
IS-A关系
HAS-A关系
复用父类代码
多态性 - 对象互换的魔法
后期绑定
向上转形
程序中的对象类型,在编译时不确定,执行时才确定
多态是面向对象的一个重要特性
3、框架VS工具
架构师用框架保证架构的落地
架构师用工具提高开发效率
4、面向对象设计的基本原则
开闭原则
对于扩展是开放的,对于修改是封闭的
意味着一个实体在不修改代码的情况下就可以做到行为的变更(扩展)
说明:
扩展能力是体现软件设计好坏的一个重要方面,没有扩展能力的设计会显得僵硬、脆弱、不可复用。
依赖倒置原则
高层模块不依赖低层模块,大家都依赖于抽象
抽象不依赖实现,而是实现依赖抽象
说明:
依赖倒置原则决定了依赖方向、开发顺序、高层主导低层、高层被复用
里氏替换原则
子类必须能够替换掉他们的基类,程序的行为和功能不变
说明:
只有遵循里氏替换原则,基于基类的代码的复用性才能保证
JDK中也有没遵循该原则的实现,如Properties -> HashTable
单一职责原则
又被称为“内聚性原则”,强调一个模块的组成元素之间的相关性
一个类只有一个引起它变化的原因
说明:
如果违法该原则,当一个职责发生变化时,可能会导致另一个职责受到影响,而且多个职责在一起会影响复用性。
接口分离原则
不应该强迫客户程序依赖他们不需要的方法,依赖应该建立在最小的接口上
使用说明:
有些场景无法做到或不方便做到单一职责原则时,可以使用接口分离原则将职责进行划分,这样客户程序可以选择最小的接口范围进行依赖
这些概念和理论在实践中或多或少都有感悟,但是工作中很少再去深究理论的东西,课程是一个梳理和学习的过程。
版权声明: 本文为 InfoQ 作者【三尾鱼】的原创文章。
原文链接:【http://xie.infoq.cn/article/cf13f2811ab89d6c898a77ae9】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论