第二周学习总结

发布于: 2020 年 06 月 17 日
第二周学习总结

1. 软件开发简史:从编程的历史看编程的本质和未来

莱布尼兹期望将各种事物通过一种逻辑语言进行描述,然后用一种可执行演算规则的机器进行计算,就可以计算出事物的各种结果。

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

编程的过程即:在计算机所能理解的“模型(解空间)”和现实世界(问题空间)之间,建立一种联系。

编程语言是一种“抽象”机制,问题是对“谁”来抽象;

一般过程:领域问题(分析抽象)-->模型(设计、抽象)-->软件系统

编程的核心要素:人(劳动者),客观业务领域(劳动对象),计算机(劳动工具)

2. 面向对象编程和面向对象分析

Booch对对象的描述:对象具有状态、行为和标识

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

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

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

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

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

  • 充血模型和贫血模型

  • 领域驱动设计DDD

 

3. 框架(frameworks)

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

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

  • 简化应用开发者的工作

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

 

不用领域的框架:

  • 微软公司的MFC框架

  • Java的GUI AWT框架

  • 开源的框架MyBatis,Spring

  • Web服务器:Tomcat等

 

框架 VS 工具

  • 框架调用应用程序代码 VS 应用程序代码调用工具

  • 架构师用框架保证架构的落地(架构选型等)VS 架构师用工具提高开发效率

 

4. 软件设计的“臭味”

软件设计的最终目的,是使软件达到“强内聚,松耦合”

  • 易扩展

  • 更强壮

  • 可移植

  • 更简单

 

与之相反,一个“不好”的软件,会发出如下“臭味”

  • 僵硬

  • 脆弱

  • 不可移植

  • 导致误用的陷阱

  • 晦涩

  • 过度设计,copy-paste代码

 

架构师要清楚设计原则和设计模式,设计出模块划分清楚的系统

 

5. 面向对象设计

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

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

    什么是依赖倒置?

    - 模块或包的依赖关系

    - 开发顺序和职责

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

    倒转的层次依赖关系: 你不要去调用框架,框架回去调用你

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

    凡是使用父类的地方,一定可以用子类替换

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

  • 原则五:接口隔离原则

用户头像

Da

关注

还未添加个人签名 2018.08.09 加入

还未添加个人简介

评论

发布
暂无评论
第二周学习总结