这个java设计模式的名称是什么?

时间:2010-03-04 13:05:47

标签: java design-patterns oop

假设我有一个模拟ATM机器的GUI Java项目,我有以下类:

 - RegisterWindow
 - LoginWindow
 - MainAccountOptionsWindow

等,其中所有类都围绕面板/窗口而不是正常的OO设计。有人告诉我这是一个特定的设计模式,也许是以E开头的东西,我只是不记得他们现在说的话!有人知道吗?以这种方式设计东西一般都不好吗?

感谢

6 个答案:

答案 0 :(得分:5)

这取决于事件如何在窗口之间传播。

MVC的优点在于有很多不同类型的MVC,简单地说“MVC”并不是很有意义:在谈论MVC和Java时,很多人实际上都是指Sun的“模型2”MVC,但它并非总是如此,远非如此。

您的案例可能是HMVC / PAC的变体,但我无法确定,因为您只粘贴了与该视图相关的名称:HVMC是由程序员独立发现的,他们不知道年龄较大的“PAC”技术。 PAC是HMVC的一个更严格的子集,因为在PAC中,视图不能直接在模型中注册回调(每个通知必须通过控制器,在HVMC中,在某些情况下可以绕过控制器)。

200KLOC代码库,它处于PAC无处不在(因此是HMVC的更严格的子集)。

你必须知道,如果你确实使用任何MVC变体,它不是“糟糕的设计”,因为它运作得很好,但肯定不是“OO”。在真正的OO设计中,对象知道如何绘制自己,根据定义,MVC将视图与对象分离,这根本不是OO。这实际上是面向对象的反论。 Googling可以找到关于该主题的精彩文章。 (简而言之:解耦可能是一件非常好的事情,但脱钩并不意味着“OOness”)。

除此之外,“根本不是OO”通常不是问题,因为99%的Java程序不是OO:它们是使用可以习惯做OO,但通常不是。

顺便说一句,如果你在维基百科上查看MVC实现的语言列表,你会发现其中很多实际上不是OO语言(甚至不是混合OO语言)。

答案 1 :(得分:1)

在这种情况下有很多种可能性:

  • 模型 - 视图 - 控制器
  • 演示抽象控制
  • 模型视图演示者
  • 模型视图viewmodel
  • 多层架构(通常为三层)
  • 面向服务的架构
  • 裸体物品

有关详细信息,请参阅此article

答案 2 :(得分:0)

看起来你正在使用好的旧MVC模式(模型/视图/控制器),其中数据计算和数据呈现是分开的。 这些视图似乎是Swing窗口的事实并不重要 - 它可能是JSP或Excel提取......

答案 3 :(得分:0)

它可能是Model View Controller实施的一部分。

其他相关模式

答案 4 :(得分:0)

您可能需要考虑查看Observer pattern,只是想一想

答案 5 :(得分:0)

模型视图控制器。