如何安排模块化的代码

系统中有action logic dao 3个高级别的包


现在有 玩家信息,消息,好友 2个模块
action.PlayerAction
action.MessageAction
action.FriendAction

logic.PlayerLogic
logic.MessageLogic
logic.FriendLogic

dao.PlayerDao
dao.MessageDao
dao.FriendDao

彼此会互相依赖,对于代码相互调用有时很纠结。
例如我要查我和好友的聊天内容

好友昵称,性别,年龄,关系(好友|粉丝),最近一条聊天内容。

这个查询功能 会涉及到不同dao的访问,加入我将这个查询接口放在MessageLogic
中,如果我要查询好友信息,或者是好友关系 ,MessageLogic 是直接依赖 玩家信息、好友 的logic 还是dao。

2014-07-06 23:12 "@zld406504302"的内容
这个查询功能 会涉及到不同dao的访问 ...

对于查询,就不能用结构性思维去对待,因为模块化属于结构思维,而查询是根据终端用户要求存在任意性,无法事前规划,数据结构和关系都无法确定,你刚设计了A和B关系,用户明天可能要查询A和C关系。

不能从数据结构上进行划分,那只能从算法函数上进行划分,通过切分为各个函数,然后再需要时像管道接在一起组合。建议参考twitter这个设计,虽然他是针对大数据,同样设计原理都适合:
http://www.jdon.com/46501