【发布时间】:2011-12-19 09:17:54
【问题描述】:
我正在尝试为我的程序的控制器组件实现一种策略模式。
我有不同的视图状态,例如 CreateViewState,您可以在其中在空白画布上创建项目,因此它需要像 createInput()、addToModel() 和 stuff 这样的方法。
我拥有的另一个状态是 EditViewState,您可以在其中编辑以前添加的项目。您选择一个输入,然后更改其颜色或大小或其他任何内容。所以控制器需要的方法是selectInputAtLocation(), or changeColor(java.awt.Color color) or changeSize(int size)...
我的方法是创建一个 IController 接口,该接口具有常用方法,如 repOK()、toString() 和更多类似 thisWasTheLocation(int x, int y) 的视图静态调用以传递按下的位置到控制器的屏幕上。
但是,对于他们的特定工作,我没有他们拥有的通用方法。我正在考虑在接口中放置一个doStuff(Item item) 方法,然后在其中执行控制器逻辑,以便客户端代码可以在整个代码中使用IController.getInstance().doStuff(item)。据我所知,如果我调用控制器的特定方法(changeColor() 用于 editController,createInput() 用于 createController),我将需要转换控制器。
如果我在接口中创建doStuff() 方法,那么我需要实现很多 if 语句,尤其是对于 editController(它有超过 7-8 个我没有提到的方法)。
应该如何设计整个系统?
P.S:Controllers 是单例,因此 getInstance()
【问题讨论】:
-
我开始尝试再次回答您的问题,但不幸的是,我必须做出太多假设,我不知道您的课程目前正在尝试教给您什么,以及您已经走了多远.如果您可以发布更具体的问题,也许我可以提供进一步的帮助。如果
if声明有效,则没有任何问题。如果您有一些工作代码要发布,我们可以帮助提出改进建议。
标签: java design-patterns strategy-pattern