Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用组件和状态设计模式的Java实体类_Java_Design Patterns_State Pattern - Fatal编程技术网

使用组件和状态设计模式的Java实体类

使用组件和状态设计模式的Java实体类,java,design-patterns,state-pattern,Java,Design Patterns,State Pattern,我正在尝试为一个同时使用组件和状态设计模式的游戏创建一个实体。让我解释一下 构成实体的组件将包括输入组件、物理组件、以及图形组件(目前)。每个组件都将创建自己的类,以保持整洁和解耦。通过这种方式,您可以实现自己的组件,例如一个PlayerInputComponent来表示播放器输入,然后创建一个实体,如下->实体播放器=新实体(输入、物理、图形) 仅此系统就可以很好地解耦组成实体的代码。它使实体类足够灵活,可以接受所有不同类型的组件,从而允许多种变化。然而,正如问题中所述,我还想使用状态设计模式

我正在尝试为一个同时使用组件和状态设计模式的游戏创建一个
实体
。让我解释一下

构成
实体的组件将包括
输入组件
物理组件
、以及
图形组件
(目前)。每个组件都将创建自己的类,以保持整洁和解耦。通过这种方式,您可以实现自己的组件,例如一个
PlayerInputComponent
来表示播放器输入,然后创建一个
实体
,如下->
实体播放器=新实体(输入、物理、图形)

仅此系统就可以很好地解耦组成
实体的代码。它使
实体
类足够灵活,可以接受所有不同类型的组件,从而允许多种变化。然而,正如问题中所述,我还想使用状态设计模式,我想不出一种方法使它们能够很好地共存

状态设计模式将用于表示一个
实体可以处于的有限状态集。例如,将有一个
运行状态
空闲状态
跳转状态
,等等。。。这些状态将能够处理输入和更新,决定何时更改状态以及更改到什么状态。例如,如果在
idlstate
中按下移动键,则
idlstate
将处理此操作并决定切换到
运行状态。这使得跟踪动画变得容易,并将用于将状态更改为自己的类的逻辑分离出来,从而避免了复杂的逻辑语句

我的问题是如何混合这两种模式,使它们能够很好地协同工作?我需要所有组件都能够访问这些状态,因为状态转换可能发生在
InputComponent
physiccomponent
(目前),并且状态也必须可以在
GraphicsComponent
中访问,以便我可以为当前动画绘制正确的帧

设置我的
实体
类的最佳方法是什么,这样它就可以实现这两种模式,并让它们彼此交互,而不会在
实体
类中造成混乱。谢谢

您可能对使用状态模式的替代设计感兴趣。