我应该使用哪种设计模式在java中构建GUI以及以下场景?

时间:2012-02-15 13:04:40

标签: java swing design-patterns user-interface enums

我正在使用swing API在Java中开发一个独立的应用程序。在以下情景中我需要专家指导。

我有一个显示员工信息的用户界面。

菜单中有四个操作,如add emp,edit emp,view emp,delete emp。

我想对所有四个动作使用相同的GUI。

我设计了一个为上面创建GUI的类;我使用Singleton设计模式来构建GUI。

视所选操作而定;在GUI中,一些组件被禁用或删除或添加更多,然后GUI被构建并显示给用户。

我正在考虑将描述操作的字符串传递给GUI construnco​​r,然后执行与componants相关的上述操作。但是因为我使用了Singleton Design模式,所以不可能。

在上述情况下,我应该怎么做才能完成我的所有要求? 您建议我使用哪种设计模式用于上述场景以及构建GUI?

请指导我的专家!

3 个答案:

答案 0 :(得分:2)

创建一个EmployeeModel类以保留employee的所有字段。再添加一个字段,例如int或enum以保持所需的操作。

在JDialog(或JFrame)中检查操作字段,并根据操作显示按钮和/或启用表示字段的禁用控件。

答案 1 :(得分:1)

使用以下操作创建枚举:

public enum Operation{
  ADD, EDIT, VIEW, DELETE
}

在你的GUI中创建一个方法:

public void setOperation(Operation op){
    case ADD: ...
    case EDIT: ...
    case VIEW: ...
    case DELETE: ...
}

其他选择是具有一种GUI继承:

abstract class EmployeeView
class AddEmployeeView extends EmployeeView
class EditEmployeeView extends EmployeeView
class ViewEmployeeView extends EmployeeView
class DeleteEmployeeView extends EmployeeView

因此,您的抽象类将具有必需的字段,子类将仅启用/禁用它们。

答案 2 :(得分:1)

正如duffymo明智地提到的那样,我建议尝试用DP获得更高的抽象视图,因为它们应该直观地作为证据出现,如果它们看起来并不意味着它们显然不适合...... Singleton不是最好的一个,带来许多限制.... 在讨论你的问题时我有一个奇怪的印象...为什么对4个不同的用例使用相同的视图?我想你不会找到任何魔法模式...... 当然你可以设计一个非常通用的屏幕,并使用观察者/可观察模式试图隐藏/取消隐藏某些小部件,但是维护和获取可能变得非常棘手?

HTH 杰罗姆