一切皆文件思想与面向接口编程

Posted zzfx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一切皆文件思想与面向接口编程相关的知识,希望对你有一定的参考价值。

是面向接口编程的典范。

 

使用统一的open,read,write,close等操作

 

作者:北极
链接:https://www.zhihu.com/question/25696682/answer/31595790
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

“一切皆文件”的好处更多的表现在开发者上,好处就是大部分操作可以统一接口,甚至只用open/read/write/ioctl/close就可以完成大部分(甚至全部)操作。

所以,从本质上说“一切皆文件”对于开发者来说更有益,代码的移植也更为方便。想想看如果一切设备的操作都能统一,那么对于码农,甚至一些设备维护人员来说是多么美好的事情。

好处说完了就开始说缺点:

对于用户来说,缺点就是这个概念太难以理解了。

对于大多数普通用户来说,键盘是键盘,鼠标是鼠标,这些设备跟文件的概念相差太远了,对于普通用户来说,“我的电脑”、“键盘”、“鼠标”这些概念更直接,如果非要说鼠标是文件“/dev/input/mouse0”,那么普通用户恐怕很难理解。

对开发者友好和对于普通用户友好其实是两码事,要知道这个世界上大部分计算机设备的使用者都不是开发人员。

说点政治不正确的话:不能因为自己是程序员,就认为世界上所有的人都应该是程序员。(利益相关:我自己也是一个程序)

所以一个友好的界面是必要的,对于普通用户来说封闭一部分操作系统的内部实现也是必要的。大多数安卓用户不会关心/dev下面有什么,而只是关心手机怎么用,怎么好用。

说完Linux再说Windows:

Windows的内部实现也近似于“一切皆文件”的思想,当然,这一切都只在内核里才有,下载一个WinObj这软件就可以看到,Windows上各种设备、分区、虚拟对象都是挂载到根“\”下的,通过这个树可以访问各种设备、驱动、文件系统等等。

因为微软也是知道“一切皆文件”对于开发者来说很友好:

技术分享

Windows与Linux不同的就是把这些对象又重新封装了一层WindowsAPI,对外以设备、盘符、文件等等表现出来,重新封装WindowsAPI的目的是为了兼容性,而设备、盘符、文件这些是为了让普通用户更好理解。

所以“一切皆文件”好处是对开发者方便,但也请注意:不是所有计算机使用者都是一个开发人员







以上是关于一切皆文件思想与面向接口编程的主要内容,如果未能解决你的问题,请参考以下文章

面向接口的开发到面向对象的编程

SQL 编程思想:一切皆关系

SQL 编程思想:一切皆关系

一切皆文件的编程思想

C#中抽象类与接口的区别

关于java面向对象编程和面向接口编程区别