`
java-mans
  • 浏览: 11422218 次
文章分类
社区版块
存档分类
最新评论

C语言和设计模式(命令模式)

 
阅读更多
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

命令模式的目的主要是为了把命令者和执行者分开。老规矩,举个范例吧。假设李老板是一家公司的头儿,他现在让他的秘书王小姐去送一封信。王小姐当然不会自己亲自把信送到目的地,她会把信交给邮局来完成整个投递的全过程。现在,我们就对投递者、命令、发令者分别作出定义。

首先定义post的相关数据。

typedef struct _Post
{
    void (*do)(struct _Post* pPost);   
}Post;
Post完成了实际的投递工作,那么命令呢?

typedef struct _Command
{
    void* pData;
    void (*exe)(struct _Command* pCommand);

}Command;

void post_exe(struct _Command* pCommand)
{
    assert(NULL != pCommand);
 
    (Post*)(pCommand->pData)->do((Post*)(pCommand->pData));
    return;
}
我们看到了Post、Command的操作,那么剩下的就是boss的定义了。
typedef struct _Boss
{
    Command* pCommand;
    void (*call)(struct _Boss* pBoss);
}Boss;

void boss_call(struct _Boss* pBoss)
{
    assert(NULL != pBoss);

    pBoss->pCommand->exe(pBoss->pCommand);
    return;
}

分享到:
评论

相关推荐

    C语言设计模式

    $ ls 备忘录模式.pdf 工厂模式.pdf 模板模式.pdf 中介者模式.pdf 策略模式.pdf 观察者模式.pdf ...访问者模式.pdf 命令模式.pdf 责任链模式.pdf $ http://blog.csdn.net/feixiaoxing/article/category/951264的mirror

    C 语言中文网 Java、Swing、设计模式、Python、Golang 等十三本

    'Java 设计模式:23 种设计模式全面解析(C 语言中文网).epub' 'JSP 教程:1 天玩转 JSP 网站开发技术(C 语言中文网).epub' 'Linux vi 命令 30 分钟入门教程(C 语言中文网).epub' 'Python 基础教程(C 语言中文...

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar )

    3.1 面向过程的程序设计和算法 3.1.1 算法的概念 3.1.2 算法的表示 3.2 C++程序和语句 3.3 赋值语句 3.4 C++的输入与输出 *3.4.1 输入流与输出流的基本操作 *3.4.2 在输入流与输出流中使用控制符 3.4.3 用...

    C语言,通讯录管理程序设计

    C语言编写的通讯录管理程序设计 #include"stdio.h" #include"stdlib.h" #include"string.h" #include"conio.h" #define HEADER1"------------------------------------------MESSAGE MENU--------------------------...

    生命游戏 C语言版 大作业

    运行良好,功能齐全,包括: 打印命令提示 打印当前地图 导入地图 保存地图 进入地图设计模式 退出地图设计模式 生成下一代生命 开始生命游戏 停止生命游戏 退出游戏

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar

    3.1 面向过程的程序设计和算法 3.1.1 算法的概念 3.1.2 算法的表示 3.2 C++程序和语句 3.3 赋值语句 3.4 C++的输入与输出 *3.4.1 输入流与输出流的基本操作 *3.4.2 在输入流与输出流中使用控制符 3.4.3 用...

    一个C语言实现菜单的例子

    文本模式下的GUI设计时,主要要用到 这些库函数:textcolor();用于设置打印文本的前景色,textbackground();用于设置打 印文本 的背景色。gettext();用于保存文本窗口的内容,puttext();显示文本;利用这两个函 数...

    C语言学生成绩管理系统

    在命令模式下面自动绘制图形界面,编译后直接运行,直接进入界面,在linux或mac下面,需要对windows依赖的进入修改。

    《你必须知道的495个C语言问题》

    1.3 因为C语言没有精确定义类型的大小,所以我一般都用typedef定义int16和int32。然后根据实际的机器环境把它们定义为int、short、long等类型。这样看来,所有的问题都解决了,是吗? 2  1.4 新的64位机上的64位...

    你必须知道的495个C语言问题

    1.3 因为C语言没有精确定义类型的大小,所以我一般都用typedef定义int16和int32。然后根据实际的机器环境把它们定义为int、short、long等类型。这样看来,所有的问题都解决了,是吗? 1.4 新的64位机上的64位类型...

    C语言实现基于TCP的epoll并发员工管理系统源码+sqlite3数据库毕业设计

    员工管理系统,可以实现管理员模式和普通用户两种登陆模式,能够将用户操作的数据保存到 sqlite3数据库中管理员模式支持增删改查历史记录普通用户可以修改自己的信息以及查询自 己的信息,通过epoll实现TCP服务器并发...

    C语言实例解析精粹(第二版) 光盘代码

    C语言实例解析精粹(第二版) 光盘代码 本文件包括以下内容: ※ 1、文件说明 ※ 2、源码操作说明 ※ 3、光盘目录清单 ◎ 源码操作说明 源代码使用方法是(以实例1为例): 将该实例的源码,比如实例1的1.c文件(可以...

    二级C语言公共基础知识

    模式设计和内模式设计 C. 内模式设计和物理设计 D. 结构特性设计和行为特性设计 (21) 算法的空间复杂度是指______。(D) A. 算法程序的长度 B. 算法程序中的指令条数 C. 算法程序所占的存储空间 D. 算法执行过程中...

    《C语言高级编程与实例剖析》源码

    4.5.3 得到填充模式和颜色的函数 121 4.5.4 与填充函数有关的作图函数 121 4.5.5 可对任意封闭图形填充的函数 124 4.6 屏幕操作函数 125 4.6.1 屏幕图像存储和显示函数 125 4.6.2 设置显示页函数 ...

    C语言编程技巧示例程序集

    共7个部分及五个附录:DOS命令扩充、屏幕界面程序设计、内在驻留程序设计、C与dBASE和汇编语言接口、WIN3下的C语言编程、其他应用技巧、C语言编程常见错误;标准VGA显示模式、ROM BIOS数据区详解、TVGA的显示模式、...

    c语言编写单片机技巧

    1. C语言和汇编语言在开发单片机时各有哪些优缺点? 答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言...

    C语言精粹(第2版)随书关盘

    按【Ctrl+F9】键,或者“Run->Run”菜单命令,编译运行该程序。 ◎ 光盘目录清单如下: 第一部分 基础篇 001 第一个C程序 002 运行多个源文件 003 求整数之积 004 比较实数大小 005 字符的输出 006 ...

Global site tag (gtag.js) - Google Analytics