Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

CCSpring 便利性说明

jijinlong edited this page Nov 14, 2016 · 1 revision

####使用ccspring 会使项目带来哪些变革呢?

  1. 你可以写一堆接口,不用去实现它,可以编译运行, 这样的目的是你可以将不要你做的给别人去实现,自己提需求
  2. 每个逻辑模块可以分离 不相干
  3. 项目的维护成本会很低

####为了说明这点,我们来基于一个需求来做份设计 再对比此间的方法。 针对于游戏服务器 玩家的类的开发,需要提供 任务 兑换 走路等功能

 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 不用包含新的头文件,增加调整后的编译速度[算是福利吧]

Clone this wiki locally

AltStyle によって変換されたページ (->オリジナル) /