好久没来写点什么了。又热又烦,或者更多的应该是更懒,也不知道该写点什么。
前几天在
gameres上看到一位好心的兄弟写的
IOCP封装,也想到几个朋友写的一些封装。突然在郁闷中想了起来:封装,于是决定用自己的言语浅谈一下封装。
在网上查找“什么叫封装”、“软件封装”,没有找到解释。那么先不管是否准确,就用自己的理解浅谈一下吧。
1.封装?封和装,字面是这样。象一个袋子一样,把它封起来、装起来。
2.疑问:为什么要封装?封装有什么好处?如何封装?
2.1.为什么要封装
通常,底层提供了强大、灵活的功能,我们需要花费很长的时间去学习、使用它们;很多时候,我们会多次做一些重复、类似、一致的事情;大多时候,其实并不需要全部的功能,我们可能频繁使用的只是某部分的功能。通过将这些重复的劳动的精心包装,滤去那些不用的功能,在学习量上、使用上,都可以获得较好的回报。
2.2.封装的好处 从为什么要封装,我们已经知道
好的封装有3个好处:1减少学习时间、2免去重复劳动、3提高工作效率。MFC使得我们不用每次都RegisterClass、CreateWindow、建立消息循环等等等等,从而为我们节省了大量的时间。
2.3.如何封装
第一.减少学习时间。为了减少学习时间,我们需要
建立自己的概念,从而精简、屏蔽掉底层后台的大量概念,减少使用者的学习量,从而做到更容易理解、掌握。(可能有人要说ACE的概念好象比本身socket的概念更多,那么你有注意它的多平台性吗?这些平台的概念总和少吗?)但是,我们会发现,和原来的概念类似的,或者没有本质的减少的,其实并没有减少我们的学习时间,而且,直接学习底层反而还可以发挥更大功效。所以,你需要建立你
自己的,从本质上更少、更精、更易懂的概念。
第二.免去重复劳动。我们为那些常用的、类似的、一致的代码,抽象出公共接口,从而把原来需要写几十、甚至几百行的代码,现在只需要几条语句就可以搞定了。
第三.提高工作效率。当我们的封装能够使使用者需要学习的量由原来的几十、几百各概念,锐减致只有几个时,当使用者原来需要写大量代码才能完成的功能只需要几次调用就可以做到时,我们已经提高了工作效率。但是,如果使用者本身就是这方面的高手时,学习就带来了额外的负担,而你的调用也并没能减少他多少工作,至少,他会对你的封装嗤之以鼻,因为你并不能改善他的工作,反而是增加了他不必要的学习。所以,你的封装应该是
从质上改变,而不是仅仅从量上改变。
请问:你的封装能够提供自己的精简易懂的概念吗?能够减少使用者的学习时间吗?能够避免他们重复的劳动吗?能够提高他们的开发效率吗?如果有一条做的不好,或者不够好。那么,我想你应该好好的再构思一下,或者虚心学习别人好的封装是怎么做的,或者你还需要学点别的什么。
一家之言,仅供参考!