写点什么

[架构师训练营] 第二周学习总结

用户头像
Trent
关注
发布于: 2021 年 01 月 10 日

本周主要学习面向对象编程的由来, 本质和未来.

1.编程的由来

人类想制造出可编程的计算机器, 所谓的可编程, 指计算机器运算所读的不仅仅是数值数据, 还有运算逻辑本身, 即程序.

随着莱布尼兹, Ada, 图灵, 冯诺依曼等计算机开创者们的不断努力, 机器从可编程的织布机, 演变到现在的微型计算机.

编程语言, 也由汇编到结构化语言的演变, 再演变出当今的面向对象编程语言.

2.编程的本质

编程的本质, 实质上就像计算机前辈们, 不断地对问题进行分析和抽象, 从而构建模型, 再对模型不断地设计和抽象, 最终演化出了更好的模型和先进的成果.

其目的是, 用计算机来解决现实世界的问题。在计算机所能理解的“模型”(解空间)和现实世界(问题空间)之间,建立一种联系。

3.编程的未来

有了面向对象的编程语言, 那么编程的未来, 应该就是对程序进行设计了.

4.面向对象编程

4.1 面向对象的描述

  • 万物皆为对象

  • 程序是对象的集合,它们通过发送消息来告知彼此所要做的。

  • 每个对象都有自己的由其他对象所构成的存储。

  • 每个对象都拥有其类型。

  • 某一特定类型的所有对象都可以接收同样的消息。

4.2 对象具有状态、行为和标识

  • 状态:表明每个对象可以有自己的数据。

  • 行为:表明每个对象可以产生行为。

  • 标识:表明每个对象都区别于其它的对象。(唯一的地址)

4.3 面向对象编程的三大特性

  • 封装: 访问控制, 定义接口.

  • 继承: 对接口的重用, IS-A 关系, HAS-A 关系 (组合).

  • 多态: 后期绑定, 向上转形.

4.4 面向对象设计的目的

面向对象设计的目的: 强内聚、低耦合,从而使系统易扩展, 更健壮, 可移植, 易理解, 易维护.

5.设计模式

设计模式是用于解决某一种问题的通用的解决方案, 也是语言中立的, 它贯彻了设计原则。

5.1 设计臭味

违反面向对象设计的目的, 会发出"臭味":

  • 僵硬: 不易改变, 牵一发而动全身。

  • 脆弱: 只想改 A,结果 B 被意外破坏。

  • 不可移植: 不能适应环境的变化。

  • 导致误用的陷阱: 做错误的事比做正确的事更容易, 引诱程序员破坏原有的设计。

  • 晦涩: 代码很难阅读和理解, 没有很好的表现出意图。

  • 过度设计、copy-paste 代码。

5.2 设计原则 (SOLID)

  • 单一职责原则(SRP): 一个类或者模块只负责完成一个职责 (或者功能).

  • /闭原则(OCP): 对于扩展开放, 对于更改封闭.

  • Liskov 替换原则(LSP): 子类型(subtype) 必须能够替换掉它们的基类型(base type). 判断依据: 子类替换父类之后, 程序能够正常运行.

  • 接口分离原则(ISP): 不应该强迫客户程序依赖它们不需要的方法.

  • 依赖倒置原则(DIP): 高层模块不能依赖低层模块, 而应该都依赖于抽象. 并且, 抽象不能依赖实现, 而是实现依赖抽象.


发布于: 2021 年 01 月 10 日阅读数: 16
用户头像

Trent

关注

还未添加个人签名 2020.05.11 加入

还未添加个人简介

评论

发布
暂无评论
[架构师训练营] 第二周学习总结