营销型网站建设页面中小企业网站开发韵茵
营销型网站建设页面,中小企业网站开发韵茵,上海物流公司网站建设,企业建网站的好处点击蓝字关注我们经常有朋友问到底如何在C程序中采用面向对象编程?如何让模块之间松耦合#xff1f;......其实究其原因还是没有把C语言与软件设计很好的联系起来。这里跟大家找了一些内容#xff0c;相信认真看完全文多多少少会有你想要的答案#xff1a;正文部分#xf… 点击蓝字关注我们经常有朋友问到底如何在C程序中采用面向对象编程?如何让模块之间松耦合......其实究其原因还是没有把C语言与软件设计很好的联系起来。这里跟大家找了一些内容相信认真看完全文多多少少会有你想要的答案正文部分记得刚开始工作时一位高手告诉我说longjmp和setjmp玩得不熟就不要自称为C语言高手。当时我半信半疑为了让自己向高手方向迈进还是花了一点时间去学习longjmp和setjmp的用法。后来明白那不单是跳来跳去那样简单而是一种高级的异常处理机制在某些情况下确实很有用。为了显示自己的技巧也在自己的程序中用过几次。渐渐发现这样的技巧带来的好处是有代价的破坏了程序的结构化设计程序变得很难读尤其对新手来说。终于明白这种技巧不过是一种调味料在少数情况使用几次可以简化对问题的处理。如果把调味拿来当饭吃一定会本末倒置写出的程序会呈现营养不良之状。事实上longjmp和setjmp玩得熟不熟与是不是C语言高手不是因果关系。但是如果可以套用那位高手的话我倒想说如果函数指针玩得不熟就不要自称为C语言高手。为什么这么说呢函数指针有那么复杂吗当然不是任何一个稍有编程常识的人不管他懂不懂C语言在10分钟内我想他一定可以明白C语言中的函数指针是怎么回事。原因在于难的不是函数指针的概念和语法本身而是在什么时候什么地方该使用它。函数指针不仅是语法上的问题更重要的是它是一个设计范畴。真正的高手当然不单应该懂得语法层面上的技巧更应该懂得设计上的方法。不懂设计能算高手吗怀疑我在夸大其辞吗那我们先看看函数指针与哪些设计方法有关与分层设计有关。分层设计早就不是什么新的概念分层的好处是众所周知的比较明显好处就是简化复杂度、隔离变化。采用分层设计每层都只需关心自己的东西这减小了系统的复杂度层与层之间的交互仅限于一个很窄的接口只要接口不变某一层的变化不会影响其它层这隔离了变化。分层的一般原则是上层可以直接调用下层的函数下层则不能直接调用上层的函数。这句话说来简单在现实中下层常常要反过来调用上层的函数。比如你在拷贝文件时在界面层调用一个拷贝文件函数。界面层是上层拷贝文件函数是下层上层调用下层理所当然。但是如果你想在拷贝文件时还要更新进度条问题就来了。一方面只有拷贝文件函数才知道拷贝的进度但它不能去更新界面的进度条。另外一方面界面知道如何去更新进度条但它又不知道拷贝的进度。怎么办常见的做法就是界面设置一个回调函数给拷贝文件函数拷贝文件函数在适当的时候调用这个回调函数来通知界面更新状态。与抽象有关。抽象是面向对象中最重要的概念之一也是面向对象威力强大之处。面向对象只是一种思想大家都知道用C语言一样可以实现面向对象的编程。这可不是为了赶时髦而是一种实用的方法。如果你对此表示怀疑可以去看看GTK、linux kernel等开源代码。接口是最高级的抽象。在linux kernel里面接口的概念无处不在像虚拟文件系统(VFS)它定义一个文件系统的接口只要按照这种接口的规范你可以自己开发一个文件系统挂上去。设备驱动程序更是如此不同的设备驱动程序有自己一套不同的接口规范。在自己开发设备开发驱动程序时只要遵循相应的接口规范就行了。接口在C语言中如何表示很简单就是一组函数指针。与接口与实现分开有关。针对接口编程而不是针对实现编程此为《设计模式》的第一条设计准则。分开接口与实现的目标是要隔离变化。软件是变化的如果不能把变化的东西隔离开来导致牵一发而动全身代价是巨大的。这是大家所不愿看到的。C语言既然可以实现面向对象的编程自然可以利用设计模式来分离接口与实现。像桥接模式、策略模式、状态模式、代理模式等等在C语言中无一不需要利用函数指针来实现。与松耦合原则有关。面向过程与面向对象相比之所以显得苍白无力原因之一就是它不像面向对象一样可以直观的把现实模型映射到计算机中。面向过程讲的是层层控制而面向对象更强调的对象间的分工合作。现实世界中的对象处于层次关系的较少处于对等关系的居多。也就是说对象间的交互往往是双向的。这会加强对象间的耦合性。耦合本身没有错实际上耦合是必不可少的没有耦合就没有协作对象之间无法形成一个整体什么事也做不了。关键在于耦合要恰当在实现预定功能的前提下耦合要尽可能的松散。这样系统的一部分变化对其它部分的影响会很少。函数指针是解耦对象关系的最佳利器。Signal(如boost的signal和glib中的signal)机制是一个典型的例子一个对象自身的状态可能是在变化的或者会触发一些事件而其它对象关心它的变化。一旦该对象有变化发生其它对象要执行相应的操作。如果该对象直接去调用其它对象的函数功能是完成了但对象之间的耦合太紧了。如何把这种耦合降到最低呢signal机制是很好的办法。它的原理大致如下其它关注该对象变化的对象主动注册一个回调函数到该对象中。一旦该对象有变化发生就调用这些回调函数通知其它对象。功能同样实现了但它们之间的耦合度降低了。在C语言中要解决以上这些问题不采用函数指针将是非常困难的。在编程中如果你从没有想到用函数指针很难想像你是一个C语言高手。*声明本文于网络整理版权归原作者所有如来源信息有误或侵犯权益请联系我们删除或授权事宜。戳“阅读原文”我们一起进步
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/88427.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!