几种常见的C语言设计模式特点分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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更像一部手动档,固然有点费事,然则用熟了省油。