抽象与分层设计

今天,这段话突然间就来了灵感。
One uses pointers and the other uses an array,but,as we saw in the previous section,if we use good programming principles,the calling routines do not need to know which method is being used.
注意看,我觉得这段话最好的举例是当时在网络协议栈中的分析。
应该说,算是一种底层的向上层的抽象。(我不知道这算不算是面对对象!?)
但是,也是看了好多遍一直不明白为什么说,就我抽象了就可以怎么地怎么地。
这句话也是点醒了我:你下面干什么,我不管,我不管你是用链表也好,用栈也好,总之你给我完成了工作,我只需要你提供接口。我不需要知道细节,也不想知道细节。
这样的确有助于分层的设计,有利于模块化。


更深入的抽象,就比如Linux的文件系统,就是对于文件的操作,最上层(这个可能不够准确)只有四种类型,比如目录,iNode节点等这种。主要是该文件系统将下属的各个类型都定义为文件类型。这就比较尴尬, 因为肯定各种设备的打开方式不同,就容易造成混乱。
但是,这里,利用了抽象的方法,他在顶层这个位置定义了一个统一的类型(可以说是一个类。),然后具体到每一个实际的文件的时候,是根据其自身的类型来定义一个实例。
其打开方式以及一些其他的操作都是,在结构体中利用函数指针来实现的。类型不同,选择不同的操作方式。(原来在网卡那部分看到的也是这种方式。)
这里,应该说是一种基础的面对对象的编程方式。


你可能感兴趣的:(抽象与分层设计)