oop – 两个彼此依赖的对象.那不好吗?

当我为我的项目构建自己的系统时,我正在学习很多关于设计模式的知识.我想问你一个我无法找到答案的设计问题.

目前我正在使用具有多个客户端的套接字构建一个小型聊天服务器.现在我有三个班:

>持有缺口,年龄和房间对象等信息的人类.
>房间类,其中包含房间名称,主题和当前在该房间的人员列表等信息.
>酒店级,其中包含人员列表和服务器上的房间列表.

我做了一个图来说明它:

我在酒店级服务器上有一个人员列表,因为现在跟踪在线有多少人会很好(不必遍历所有房间).
这些人住在酒店级,因为我希望能够在不搜索间的情况下搜索特定的人.

这是不好的设计吗?还有另一种实现方式吗?

谢谢.

严格来说,类之间的相互依赖问题可以通过使用接口(抽象类,如果你的语言是例如C或Python)来解决,IRoom和IPerson;在伪代码
interface IPerson
    IRoom getRoom()
    // etc

interface IRoom
    iter<IPerson> iterPerson()
    // etc

这使得只有接口相互依赖 – 接口的实际实现只需要依赖于接口.

如果你想要避免循环引用循环(例如在cpython中通过减慢垃圾收集速度,这可能会很麻烦),这也为你提供了大量的实现余地 – 你可以使用弱引用,一个典型的底层关系数据库对于第一个简单的原型,你可以使用你选择的语言中最简单的东西(可能很简单,而且必然是循环的,引用[[指针,在C]]与一个人指的是一个房间和房间到列表< Person>).

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...