1

我正在尝试将状态设计模式应用于我正在构建的即时通讯程序。该程序建立在现有的即时通讯 API 之上。我本质上是在创建一个包装类来简化发送消息的过程。(包装类将被几个自动化脚本用于在某些事件发生时触发消息。)

这是我到目前为止所拥有的:

  • Messenger用作客户端接口并保存对当前状态的引用的类。
  • AbstractMessengerState所有具体状态都将从中继承的类。
  • 代表各种状态的几个具体State类(例如 SessionStarted、LoggedIn、LoggedOut 等)

我遇到的问题是在哪里存储状态数据。也就是说,哪个类应该存储我需要执行信使程序的业务逻辑的字段。例如,我有一个 Map 数据结构,它将用户 ID(字符串)映射到底层 API 使用的对象。我有一个 Session 对象,用于访问各种消息传递组件以及登录和退出消息传递服务器。这些对象需要在所有子类之间共享。

如果我将这些数据存储在基类中,那么每次实例化新状态时都会复制数据。有没有办法确保子类可以访问基类中的数据而不复制字段?


更新

好的,在阅读了相关文章后,我将尝试将所有内容存储在 Context (Messenger) 类中,看看情况如何。

4

0 回答 0