一个软件设计的有关问题
一个软件设计的问题服务端是一个数据库系统,同时有个类似于代理的东西,要能解析从客户端发来的信号,大致就
一个软件设计的问题
服务端是一个数据库系统,同时有个类似于代理的东西,要能解析从客户端发来的信号,大致就是一些int数据,然后服务端要根据客户端发来的信号进行对应操作,操作有五大类,每个大类都有不同数量的小类。
现在的问题是,如果设计服务端这里的程序?我现在的想法是接口只有一个,参数是大类号(int)和小类号(int),返回结果值传给客户端,这个接口的实现就是一大堆的switch case,先针对大类有个switch case,然后每个case中又有小类的switch case。
总感觉这样设计不利于后期维护,有没有别的好点的方法?谢了
[解决办法]
响应机制, 可以分门别类的注册 handler .
主要的还不是这个, 线程与任务如何管理才是重点.
[解决办法]
管理好就好了!维护起来也不是很难!我们现在的网络业务修改也是差不多这样处理的!后期业务多了,加个信令case就好!
主要框架搭建好后期就比较好维护,主消息下面的循环子消息的实现方式,现在比较多的基本业务逻辑也差不多都是这样来处理的!
[解决办法]去看看command模式 是不是你想要的
[解决办法]
去看看command模式 是不是你想要的
不太一样,命令模式不注重反馈,而我这个需要服务端反馈数据给客户端
反馈怎么解释? 你也可以封装反馈信息啊 也是命令模式啊 角度不同而已
[解决办法]三层架构 用户-服务-数据库
[解决办法]关于服务器收发消息,去看看阻塞队列、生产者——消费者模型,不同线程之间可以用回调去响应。
关于switch case管理:去看下FSM(有限状态机),这个从头实现的话可能比较麻烦点,但是弄懂了会很好用,游戏里面经常。
[解决办法]lz如果只是不想写switch case
那可以用map 加 函数指针
大类号加小类号 就是 map的索引, 对应的值就是这个大类下这个小类的处理逻辑函数
之后不管是增加业务还是减少业务,只需要维护这个map就可以了
[解决办法]如果不想用switch,那就把消息封装成类,然后用多态性来解决。
google:面向对象 switch。