写点什么

架构师训练营第 2 周学习总结

用户头像
菜青虫
关注
发布于: 2020 年 10 月 30 日

本周主要学习面向对象编程和框架设计的一些指导原则。

  • 编程简史

  • 史前时期:可编程织布机读取打孔纸带以编织图案,这也是最开始计算机采用打孔纸带作为指令输入最初的启发来源

  • 远古时期:基于冯诺伊曼体系的ENIAC是真正意义的计算机开端,当时编程需要插拔电线以输入数据,实操意义上的机器编程

  • 上古时期:汇编语言让人们可以用便于记忆的指令和占位符来编程,汇编程序做编译成机器指令和地址链接的操作,指令可以输入到打孔纸带。汇编程序编写者才算得上真正意义的程序员。

  • 中古时期:面向过程的语言,使用更解决人类语言的方式解决问题,引入循环、条件、子程序等几乎所有现代语言都有的特性

  • 近代:面向对象语言,解决面向过程语言线性思维无法很好描述负责系统的缺陷,使用对象来对问题领域进行建模,对现实世界有更好的描述力,跟人类的思维方式更类似,这也是现在编程语言的主流

  • 面向对象设计的原则

  • 面向对象设计更容易达成我们希望的目标:易扩展、更强壮、可移植、更简单

  • 达成这些目标需要遵循一些基本原则,而常见套路被总结成了设计模式

  • 开闭原则

  • Open for extension; Closed for modification

  • 实现关键是抽象,面向接口编程,当需要扩展功能时,增加新的实现类就可以。新增代码总是比修改代码要安全,也更容易维护。

  • 依赖倒置原则

  • 高层模块不能依赖底层模块,底层模块也不依赖高层模块,大家都依赖抽象

  • 高层模块定义抽象

  • Liskov替换原则

  • 子类型必须能够替换掉他们的基类型

  • 里氏原则是判断正确继承关系的标准,它不是看静态的ISA关系,而是看动态的程序行为

  • 几个有用的推论

  • 子类必须拥有基类的整个接口

  • 子类的访问控制不能比基类更严格

  • 子类不能抛基类不支持的异常

  • 单一职责原则

  • 所谓职责指的是变化的原因,一个类只有有一个引起它变化的原因

  • 强调程序应该是内聚的,它定义了一个类的最佳外延

  • 违反后果是客户端会引入多余的依赖,修改类时会相互影响

  • 接口分离原则

  • 从客户端需要出发,客户只应看到它需要的方法,不能强迫客户依赖不需要的方法

  • 可以通过多重继承和适配器的方式解决胖接口

用户头像

菜青虫

关注

还未添加个人签名 2017.11.20 加入

还未添加个人简介

评论

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