写点什么

架构师训练营 WEEK2 总结

用户头像
班戟鱼
关注
发布于: 2020 年 06 月 17 日
架构师训练营 WEEK2 总结

编程语言的实质

编程的目的:用计算机来解决现实世界的问题

编程的过程:在计算机能理解的模型与现实世界中,建立一种联系

编程语言是一种抽象的机制,问题是对谁抽象

抽象的种类

机器代码和汇编语言:对基础机器进行抽象

非结构化的高级语言:对计算处理逻辑抽象

结构化的程序设计:开始对问题领域进行一定程度的抽象

面向对象的程序设计:直接表达问题空间的元素



什么是面向对象编程

  • 万物皆为对象

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

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

  • 每个对象都拥有类型

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



什么是对象

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

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

  • 标识:表明每个对象都区别于其它的对象



面向对象编程的三要素

封装性

  • 隐藏实现细节

  • 定义接口

继承性

  • IS-A关系

  • HAS-A关系

多态性

  • 后期绑定

  • 向上转型

面向对象编程不是使用面向对象的编程语言进行编程,而是利用多态特性进行编程

面向对象分析是将客观世界,即编程的业务领域进行对象分析

  • 充血模型与贫血模型

  • 领域驱动设计DDD

面向对象设计的目的和原则

目的:

强内聚、低耦合,从而使系统易扩展、更强壮、可移植、更简单

原则:

原则独立于编程语言,为了达到设计目标,有人总结出了多种指导原则

设计模式

用于解决某一种问题的通用解决方案

是语言中立的

贯彻了设计原则

Gang of Four提出三大类23种基本的设计模式:

  • 创建模式

  • 行为模式

  • 结构模式

在更细分的领域当中还可以总结出许多设计模式:

  • 并发编程模式

  • JAVAEE模式

  • etc.

框架

框架是用来实现某一类应用的结构性的程序,是对某一类架构方案可复用的设计与实现

  • 如同框架结构的大厦的框架

  • 简化应用开发者的工作

  • 实现了多种设计模式,使应用开发者不需要花太大的力气,就能设计出结构良好的程序来

框架VS工具

框架调用应用程序代码

应用程序代码调用工具



架构师用框架保证架构的落地

架构师用工具提高开发效率



面向对象设计的基本原则

OOD原则一:开闭原则(OCP)

OCP:Open/Closed Principle

  • 对于扩展是开放的

  • 对于更改是封闭的

  • 不用修改软件实体,就应该能实现功能的扩展

OOD原则二:依赖倒置原则(DIP)

DIP - Dependency Inversion Principle

  • 高层模块不能依赖低层模块,而是大家都依赖于抽象

  • 抽象不能依赖实现,而是实现依赖抽象

DIP倒置了什么?

  • 模块或包的依赖关系

  • 开发顺序和职责

软件的层次化

  • 高层决定低层

  • 高层被重用

框架的核心

好莱坞原则:Don't call me,I'll call you.

倒转的层次依赖关系

OOD原则三:Liskov替换原则(LSP)

一个正确的继承要符合Liskov替换原则

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

LSP要求,凡是使用基类的地方,一定也适用于其子类

从java看:

  • 子类一定得拥有基类的整个接口

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

从更广泛的意义看,子类的契约不能比基类更严格

如何重构代码,解决LSP问题?

  • 最简单的办法是,提取共性到基类

  • 改成组合

继承VS组合

继承和组合是OOP的两中扩展手段

继承的优点:

  • 比较容易,因为基类的大部分功能可以通过继承直接进入子类

继承的缺点:

  • 继承破坏了封装,因为继承将基类更多的细节暴露给子类,因为继承被称为“白盒复用”

  • 当基类发生改变时,可能会层层影响其下的子类

  • 继承是静态的,无法在运行时改变组合

  • 类数量的爆炸

应该优先使用组合

OOD原则四:单一职责原则(SRP)

SRP - Single Responsibility Principle

  • 又被称为“内聚性原则(cohesion)”,意为一个模块的组成元素之间的功能相关性

  • 将它与引起一个模块改变的作用力相联,就形成了如下描述:一个类,只能有一个引起它的变化的原因

什么是职责?一个职责是一个变化的原因

OOD原则五:接口分离原则(ISP)

ISP - Interface Segregation Principle

  • 不应该强迫客户程序依赖他们不需要的方法

ISP和SRP的关系

  • ISP和SRP是相关的,都和内聚性有关

  • SRP指出应该如何设计一个类——只能有一种原因才能促使类发生改变

  • ISP指出应该如何设计一个接口——从客户的需要出发,强调不要让客户看到他们不需要的方法



用户头像

班戟鱼

关注

还未添加个人签名 2018.07.08 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 WEEK2 总结