设为首页 加入收藏

TOP

C和设计模式(继承、封装、多态)
2012-12-25 13:08:17 来源: 作者: 【 】 浏览:452
Tags:设计模式 继承 封装 多态

    记得还在我们大学C++(www.cppentry.com)第一门课的时候,老师就告诉我们说,C++(www.cppentry.com)是一门面向对象的语言.C++(www.cppentry.com)有三个最重要的特点,即继承、封装、多态.等到后来随着编码的增多和工作经验的积累,我也慢慢明白了面向对象的含义.可是,等我工作以后,使用的编程(www.cppentry.com)语言更多的是C语言,这时候我又想能不能把C语言变成面向对象的语言呢 等到后来通过思考和实践,我发现其实C语言也是可以面向对象的,也是可以应用设计模式的,关键就在于如何实现面向对象语言的三个重要属性.

    (1)继承性

    typedef struct _parent

    {

    int data_parent;

    }Parent;

    typedef struct _Child

    {

    struct _parent parent;

    int data_child;

    }Child;

    在设计C语言继承性的时候,我们需要做的就是把基础数据放在继承的结构的首位置即可.这样,不管是数据的访问、数据的强转、数据的访问都不会有什么问题.

    (2)封装性

    struct _Data;

    typedef void (*process)(struct _Data* pData);

    typedef struct _Data

    {

    int value;

    process pProcess;

    }Data;

    封装性的意义在于,函数和数据是绑在一起的,数据和数据是绑在一起的.这样,我们就可以通过简单的一个结构指针访问到所有的数据,遍历所有的函数.封装性,这是类拥有的属性,当然也是数据结构体拥有的属性.

    (3)多态

    typedef struct _Play

    {

    void* pData;

    void (*start_play)(struct _Play* pPlay);

    }Play;

    多态,就是说用同一的接口代码处理不同的数据.比如说,这里的Play结构就是一个通用的数据结构,我们也不清楚pData是什么数据,start_play是什么处理函数 但是,我们处理的时候只要调用pPlay->start_play(pPlay)就可以了.剩下来的事情我们不需要管,因为不同的接口会有不同的函数去处理,我们只要学会调用就可以了.

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇基于c语言加密解密算法 下一篇C struct 中字节对齐问..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: