国家设计模式实施

时间:2013-06-17 15:16:11

标签: java design-patterns state

我正在尝试将State Design Pattern应用于我正在构建的即时消息程序。该程序建立在现有的即时通讯API之上。我本质上是创建一个包装类来简化发送消息的过程。 (当某些事件发生时,几个自动化脚本将使用包装器类来触发消息。)

这是我到目前为止所做的:

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

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

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


已更新

好的,在阅读related post之后,我将尝试将所有内容存储在Context(Messenger)类中,看看情况如何。

0 个答案:

没有答案