我正在尝试将State Design Pattern应用于我正在构建的即时消息程序。该程序建立在现有的即时通讯API之上。我本质上是创建一个包装类来简化发送消息的过程。 (当某些事件发生时,几个自动化脚本将使用包装器类来触发消息。)
这是我到目前为止所做的:
Messenger
类,它将作为客户端接口并保存对当前状态的引用。AbstractMessengerState
类。State
类(例如SessionStarted,LoggedIn,LoggedOut等)我遇到的问题是存储状态数据的位置。也就是说,哪个类应该存储我需要执行信使程序的业务逻辑的字段。例如,我有一个Map数据结构,它将userID(字符串)映射到底层API使用的对象。我有一个Session对象,用于访问各种消息组件以及登录和退出信使服务器。这些对象需要在所有子类之间共享。
如果我将这些数据存储在基类中,那么每次实例化一个新状态时,我都会复制数据。有没有办法确保子类可以访问基类中的数据而不重复字段?
已更新
好的,在阅读related post之后,我将尝试将所有内容存储在Context(Messenger)类中,看看情况如何。