您的位置:首页 > 其它

区分机制和策略——UNIX设计背后最好的思想

2012-10-14 21:29 861 查看
这篇文章只要是读了《linux device drivers》这本书中的对设备驱动程序作用所作出的阐述,觉得很有道理,就结合自己的理解记录下来。

在原文中写到:“区分机制和策略是Unix设计背后隐含的最好的设计思想。大多数编程问题实际上都可以分成两个部分:“需要提供什么功能”(机制)和“如何使用这些功能“(策略)。如果这两个问题由程序的不同部分来处理,或者甚至由不同的程序来处理,则这个软件包更易开发,也更容易根据需要来调整。”

和学数学一样,公理、定理使我们脚下可以踩的最坚实的钉子,数学问题则是我们需要自己的策略去解决。定理、公理就是一种机制,就是一个个互不相干的东西。

再举个例子,盖房子需要砖头、水泥、沙子、石子……这些材料就是可以实现一定功能的、独立存在的”机制“,盖出什么样的房子就是一种策略。建筑设计师根本不需要知道这些材料是怎么造出来的,只需要知道它在哪里,它有什么用!如果情况更复杂,他根本都不需要知道这些东西有什么用,在哪里,而做些工作可以交给包工头去做(这样做的目的增加了一个层,可以减小层的复杂程度)。而制造砖头、水泥、石子……的机构也可以不知道这房子是怎么造的,只需按规定制造这些东西就行了(这里的规定在linux设备驱动中是linux内核制定好了的接口,要想把设备驱动程序加入到内核中必须满足接口才行,材料是否可以盖房子也是要盖房子决定的,不可能拿个大石头房子都可以允许加入的),这样可以更高效的完成盖房子的工程。

在编写驱动程序是,程序员应该注意下面这个基本概念:编写访问硬件的内核代码时,不要给用户强加任何的特定策略。因为不同的用户有不同的需求,驱动程序应该处理如何使硬件可用的问题,而将怎么样使用硬件使上层的问题。因此驱动程序只提供了访问硬件的功能而没有附加任何限制时,这个驱动程序就比较灵活。

所以说:不带策略的软件设计是设计者的一个共同的目标!

参考文献:《linux device drivers》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: