当我为我的项目构建自己的系统时,我正在学习很多关于设计模式的知识.我想问你一个我无法找到答案的设计问题.
目前我正在使用具有多个客户端的套接字构建一个小型聊天服务器.现在我有三个班:
>持有缺口,年龄和房间对象等信息的人类.
>房间类,其中包含房间名称,主题和当前在该房间的人员列表等信息.
>酒店级,其中包含人员列表和服务器上的房间列表.
我在酒店级服务器上有一个人员列表,因为现在跟踪在线有多少人会很好(不必遍历所有房间).
这些人住在酒店级,因为我希望能够在不搜索房间的情况下搜索特定的人.
这是不好的设计吗?还有另一种实现方式吗?
谢谢.
严格来说,类之间的相互依赖问题可以通过使用接口(抽象类,如果你的语言是例如C或Python)来解决,IRoom和IPerson;在伪代码中
interface IPerson IRoom getRoom() // etc interface IRoom iter<IPerson> iterPerson() // etc
这使得只有接口相互依赖 – 接口的实际实现只需要依赖于接口.
如果你想要避免循环引用循环(例如在CPython中通过减慢垃圾收集速度,这可能会很麻烦),这也为你提供了大量的实现余地 – 你可以使用弱引用,一个典型的底层关系数据库对于第一个简单的原型,你可以使用你选择的语言中最简单的东西(可能很简单,而且必然是循环的,引用[[指针,在C]]与一个人指的是一个房间和房间到列表< Person>).