几种常见的C语言设计模式特点分析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

谈到用说话,更多是说话惯用法,而非计划形式,他们是不同层面的观点,MVC那就扯得更远了,计划形式是针对利用top down上去,而非一种特定的说话,假如为说话而形式,为形式而形式那便是刻舟求剑。广义的计划形式是针对面向工具这种说话,C 用的啰嗦一点,模仿出工具干系,应用GOF总结的计划形式是没成绩的,但干系假如整地过于繁杂就违反C 说话精干的特色,就不要用C了。广义的是针对一种编程范式中的形式,象C这种命令式说话,模仿函数式编程照样力不从心,函数式里的形式就用不来。

C的惯用法重要会合在macro, 用好了会感到代码清楚,反复很少。C不是OO说话,但编程中能够利用一些OO思惟。

好比工具的观点,C++的class便是struct的升级版,所以在C中一个struct变量能够视为一个工具实例。

好比有一个玩家工具布局体struct Player,内有属性HP。承继玩家的,有兵士和法师。

那末能够这么写:

struct Player {

int HP;//血量

};

struct Warrior {

struct Player base;

int Attack;//攻击力

int Defensive;//进攻力

};

struct Mage {

struct Player base;

int MP;//邪术值

int Range;//施法规模

};

//玩家挂了吗?

int Player_IsDead(struct Player* player) {

return (player->HP==0) ? 1 : 0;

}

//吃血

void Player_DrinkRedBottle(struct Player* player, int bottle_level) {

if( bottle_level == 1 ) player->HP += 100;//小瓶

else if( bottle_level == 2 ) player->HP += 500;//大瓶

}

struct Warrior w;

struct Mage m;

//兵士没挂就吃个小血瓶

if( !Player_IsDead((struct Player*)&w) ) {

Player_DrinkRedBottle((struct Player*)&w, 1);

}

//

if( !Player_IsDead((struct Player*)&m) ) {

Player_DrinkRedBottle((struct Player*)&m, 1);

}

这种写法不如C++的便利,短缺充足的语法反省,但也算够用了。

C别的一个很实用的器械便是函数指针,用回调的方法能够完成许多器械,好比插件架构。

这么写C,看起来远不如间接用C++便利。然则C++特征太多,纵然有经验的人也可能堕入过计划中。写法式,着眼点应该是办理营业成绩,依据营业停止思虑。C更像一部手动档,固然有点费事,然则用熟了省油。

相关文档
最新文档