状态模式如何嵌套?
状态模式的思想非常好,但感觉在层次状态机方面,好像会不行吧。
比如一个编辑器,视图有几种状态(如Interact, Drop, Menu等)。
因为视图是所以编辑功能的基础,所以是顶层状态。
下面是可编辑控件,也有几种状态(如Selection, Drag, Menu, RubberBand等)。
因为这些控件是在视图上面的,所以是第二层状态。
现在这样就是层次状态了。因为状态模式只是讲解对一个对象的状态进行设计,
没有讲解对二个对象、层次状态如何设计。
请问各位前辈这个应该如何做?有没有参考资料?谢谢!
分数不多,有分一定再加上,谢谢!
[解决办法]
状态模式是对象的行为必须根据当前对象的状态而定 一旦状态改变 行为也要变,就好比你要送别人礼物,你必须知道别人喜欢什么吧,这个喜欢的东西就是对象的状态你必须根据这个状态来买礼物,状态会影响你的行为
LZ说的视图和menu toolbar statusbar应该是组合模式即包含关系. 个人觉得一个视图编辑器应该是包含
装饰模式 抽象工厂模式 组合模式 观察者模式以及策略模式
视图必须聚合菜单 状态栏 工具栏和可以编辑的客户区窗口(以及其中的文字 图形图象 声音对象等)
编辑器可以改变主题如xp win7 classic等因此你需要抽象工厂模式创建不同类型的一组对象
添加边框 滚动条需要装饰模式
视图与文档之间的观察者模式
菜单 状态栏和工具栏的响应要用策略模式
我觉得先搞清楚MVC模式可以做个简单的编辑器