-
Notifications
You must be signed in to change notification settings - Fork 0
CCSpring 便利性说明
jijinlong edited this page Nov 14, 2016
·
1 revision
####使用ccspring 会使项目带来哪些变革呢?
- 你可以写一堆接口,不用去实现它,可以编译运行, 这样的目的是你可以将不要你做的给别人去实现,自己提需求
- 每个逻辑模块可以分离 不相干
- 项目的维护成本会很低
####为了说明这点,我们来基于一个需求来做份设计 再对比此间的方法。 针对于游戏服务器 玩家的类的开发,需要提供 任务 兑换 走路等功能
class User { public: void doQuest(); void doExchange(); void doWalk(); };
如果这三个函数没有关联那好办了,其实就这么写!实际上 doWalk 在一些情况下 需要处理 doQuest 和 doExchange 他们有时候相互交织。
void User::doWalk() { doQuest(); doExchange(); }
这样也好办了,就这样呗,也能接受!实际上 doWalk() 会用到位置数据, doQuest() 会用到 人物数据, doExchange 会用到 金币数据。
class User { int gold; int data; int pos; void doQuest(); void doExchange(); void doWalk(); };
问题真的来了,这三个东西是3个人写的,每个人的工作进度不一样,得等其他人的实现,SVN提交时也或多或少的冲突,User的无限膨胀,代码也变得越来越丑。 我们来个基本的封装
class User{ Quest quest; Exchange change; Walk walk; };
作为User的开发者,我提供一些基本的操作 发送,接受,存储操作 在User里植入代码, 构造里传递 各个类的User对象,这个也有问题,User与各个功能模块联系紧密,每次一样的需要变动User 增加新的实现的头文件,但是是很大进步了, 我们通过ccspring会是什么样子的?
class User{ public: std::vector<IAction> actions; // 就是这样子的 };
可以为不同的IAction指定不一样的行为,可以动态变更,同时 User.h 不用包含新的头文件,增加调整后的编译速度[算是福利吧]