某人指导,必须在重新看一遍,所以再来一遍
在我的印象里面数据结构一直都指的是二叉树,队列,栈,hash等,但是昨天看到一句话,socket是一种数据结构,这句话让我开始怀疑自己的认知,因为如果按照我以前的理解,我会想socket是不是用了某种数据结构,可是那么着也不应该说socket是一种数据结构啊,今天,问了某位大师,他说五顿饭,我还是自己想吧!
数据结构
数据结构意味着介面或封装:一个数据结构可被视为两个函数之间的介面,或者是由数据类型联合组成的存储内容的访问方法封装。
这句话我是不是可以认为,我曾经封装过的mysql或者其他的class类文件,里面的某些方法也可以称之为数据结构代码,然而类会产生对象,那么对象和数据结构之间是不是存在 某种关联呢?
数据结构和对象:
data structure:是计算机中存储、组织数据的方式
数据结构指的就是数据的载体,暴露数据,而几乎没有有意义的行为,分布式服务器的数据传输对象(DTO)模式,DTO(Request/Response)就是一个很典型的数据载体,只存在简单的get,set属性,并且更倾向于作为值对象存在
对象则刚好相反作为面向对象的产物,必须封装隐藏数据,而暴露出行为接口,DDD(Domain-Driven Design)中领域模型倾向于对象不仅在数据更多暴露行为操作自己或者关联状态。
这也就是说,对象和数据结构还是有本质区别的,使用数据结构的代码便于在不改动现在数据结构的前提下添加新的行为(函数),面向对象代码则便于不改动现 有函数的前提下添加新的类。换句话说就是数据结构难以添加新的的数据类型,因为需要改动所有函数,面向对象的代码则难以添加新的函数,因为需要修改所有的 类。在任何一个复杂的系统都会同时存在数据结构和对象,我们需要判断的是我们需要的是需要添加的新的数据类型还是新的行为函数。---摘自 Clean Code
我是这么理解的,我认为我的类文件里面存在数据结构的代码,同时也会存在面向对象的代码,但是这些代码封装构成了我的class文件,对象会告诉使用者,可以调用哪些方法,不会告诉他内部数据的处理,数据结构不提供实体的操作
突然发现我又绕远了,说正题:
socket是一种数据结构:我现在的理解是,当我们创建socket,进行socket通信的时候,开始的时候 socket会调用socket数据结构分配内存,绕了这么半天,我终于发现我理解出现偏差的地方了,
不过说实话,这次的错误很值啊,发现了一本好书,还发现自己现在回想到问题了,哈哈。。进步。。
我只是菜鸟一只,如有大师,请指教