架构师训练营——第二周总结

用户头像
jiangnanage
关注
发布于: 2020 年 06 月 17 日

1、软件开发简史

软件编程早于计算机;

编程的目的:解决现实世界的问题;编程语言是一种“抽象”的机制,问题是对“谁”来进行抽象;

编程语言的演进:汇编语言——高级语言——结构化程序——OOP

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

从编程语言的演进可以看出其实是对不同编程核心要素抽象的演进过程,从最开始对劳动工具的抽象(汇编语言)到现在以及以后对劳动对象抽象(OOP);

对象:对象具有状态(有自己的数据)、行为(可以产生行为)和标识(唯一的地址)

OOP三大特征:封装、继承、多态;(但不是面向对象语言独有的)

2、OOD原则

开闭原则(OCP) 对于扩展是开放的对于更改是封闭的;

依赖倒置原则(DIP)高层模块不能依赖低层模块,而是大家都应该依赖抽象,就是对抽象进行编程。Don't call me,I'll call you;

Liskov替换原则(LSP) 一个正确的继承需要遵循LSP,所有用父类的地方都能用其子类替换;

单一职责原则(SRP)

接口分离原则(ISP)

SRP和ISP都是和“内聚性”相关,SRP指出如何设计一个类,只能有一种原因才能促使类发生改变,ISP指出如何设计一个接口,从客户的需求出发,强调不要让客户看到他们不需要的方法。



每上完一堂课回想自己之前写过的代码,就会觉得有很多问题,感觉一些知识点只能留于表象很难运用到实践可能还是对面向对象理解不深刻。真正到自己实践的时候往往又会变成用面向对象语言在写面向过程的程序。考虑问题,不全面或者不能把问题真的抽象化,半抽象的或者直接用一个类实现,到时候有需求需要变更又会对这个类进行改动,没有很好用到抽象思想。我觉得这些思想要懂还是很容易,但是要真的会用还有很长的路要走啊。

用户头像

jiangnanage

关注

还未添加个人签名 2019.04.11 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营——第二周总结