如果出现了在一个类中调用另一个类,是不是设计有问题(100分)

  • 主题发起人 主题发起人 blue_morning
  • 开始时间 开始时间
B

blue_morning

Unregistered / Unconfirmed
GUEST, unregistred user!
程序的目的: 一个局域网内的聊天程序。

设计前的构想:(服务器端)
  Socket类负责侦听
  User类负责连接各个客户端,接受数据和发送数据。
  IpData类将User类的数据包打开,折分为可用的格式或是将得到结果组合为一个要发送的数据格式。
  UserList类是User的列表,完成对系统在线用户的维护工作,如用户上下线,系统广播或并根据相应的操作码提供操作
  DataModal(数据模板)中添加了一些方法,用于密码验证和写日记之类的工作。
我感觉是没有问题了。比如IpData这样的类还可以用到客户端,因为数据格式是先定义好的。
但是开始写后:
  User类收到Socket消息后它要调用IpData的一个方法,IpData的数据包打开后又要调用
UserLsit的方法来完成操作。这就是说我写时要在User类中实例化一个IpData类,在IpData类中
实例化一个UserList类。 我晕 :(
  这样分类还有什么意义,我全部写成一个类不就OK了。但是象IpData中的操作方法的确
是与哪一个User类送来的数据无关的为什么我不能分离它呢?是不是我设计就有问题?
 
我原来做过,不过现在忘了。[^]
 
我都晕了,类的目的是封装和继承 ....
调用没有问题呀
类也有聚合亚
 
to: Brave:

还有重用,我想让它分开以清晰。但是觉得他们想粘一起。

不过把它们表示成继承的关系好象也不错。我想的是组合。
Brave思想的是竖线。我想的是直线。

如果这几个类由一个继承关系来完成?如何做好呢?
 
我认为由一个继承关系好像不太好

我觉得user和userlist是否可以和在一起,其他的划分应该没有什么问题

user使用ipdate可以是协同工作(关联),不一定是聚合呀
 
问题还有,如果要验证用户,我还要调用DataModal吗?
:(
 
我有个新想法,把调用做为一个消息发出去。

比如User类收到IP包后就广播一个消息,消息包含这个User类的唯一标识和IP包。
这个消息指定由IpData类来处理,处理完后再广播一个由DataModal处理的消息来验证用户
是否合法。完成后发一个要求UserList处理的消息。UserList在列表中找到User,用它的
Send方法将结果字符串送回。

但是有个问题,在消息的发送过程中还可以包含一个数据吗?这方面我不太熟悉请大家多指点。
 
多人接受答案了。
 
后退
顶部